我在R A大空間行的數據幀稱爲lines
我想功能line2route
適用於從stplanr器R並聯的foreach空間數據
爲了加快這一進程,我想打破檔案成環並行運行它們。
library(doParallel)
batch_size <- ceiling(nrow(lines)/6)
cl <- makeCluster(6)
registerDoParallel(cl)
foreach(i = 1:6) %dopar% {
l_start <- as.integer(1 + (i - 1) * batch_size)
if(i * batch_size < nrow(lines)){
l_fin <- as.integer(i * batch_size)
}else{
l_fin <- as.integer(nrow(lines))
}
lines_sub <- lines[c(l_start:l_fin),]
rq <- line2route(l = lines_sub, route_fun = route_cyclestreet, plan = "quietest")
saveRDS(rq, file = paste0("../temp/rq_batch_", i, ".Rds"))
}
代碼打破了lines
成6份和運行的功能,然後保存該結果。
這工作正常在for循環中,但是當我將其更改爲一個foreach循環,並嘗試做並行我得到錯誤信息
錯誤{:任務1失敗 - 「C(」類 \「tbl_df \」的對象的分配對於類 \「SpatialLinesDataFrame \」;(數值,\「data.frame \」)不爲真的對象中的@'數據'無效「, 「類\」tbl \「的對象的賦值對於 中類'\ SpatialLinesDataFrame \」;(value, \「data.frame \」)不爲真的@'data'無效, 「分配一個類 \」da的對象ta.frame \「對類 \」SpatialLinesDataFrame \「中的對象的@'data'無效;是(value,\「data.frame \」)不是TRUE「)」
是否可以運行帶有空間數據的foreach循環?我並不擔心在最後重新加入數據,因爲我可以在稍後分開進行。