Tôi đang cố gắng chạy một số mã R và nó bị lỗi do bộ nhớ. Các lỗi mà tôi nhận được là:vectơ dài không được hỗ trợ chưa được
Error in sendMaster(try(lapply(X = S, FUN = FUN, ...), silent = TRUE)) :
long vectors not supported yet: memory.c:3100
Chức năng tạo ra những rắc rối như sau:
StationUserX <- function(userNDX){
lat1 = deg2rad(geolocation$latitude[userNDX])
long1 = deg2rad(geolocation$longitude[userNDX])
session_user_id = as.character(geolocation$session_user_id[userNDX])
#Find closest station
Distance2Stations <- unlist(lapply(stationNDXs, Distance2StationX, lat1, long1))
# Return index for closest station and distance to closest station
stations_userX = data.frame(session_user_id = session_user_id,
station = ghcndstations$ID[stationNDXs],
Distance2Station = Distance2Stations)
stations_userX = stations_userX[with(stations_userX, order(Distance2Station)), ]
stations_userX = stations_userX[1:100,] #only the 100 closest stations...
row.names(stations_userX)<-NULL
return(stations_userX)
}
tôi chạy chức năng này sử dụng mclapply 50k lần. StationUserX đang gọi Distance2StationX 90k lần.
Có cách nào rõ ràng để tối ưu hóa chức năng StationUserX không?
bạn có truy xuất 'Vectorize' hoặc' cmpfun' (trong gói 'trình biên dịch') để xem liệu nó có cung cấp mọi tốc độ dễ dàng không? –
cũng suy nghĩ về 'foreach' cho song song đó là tầm thường để thực hiện –