我在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循环?我并不担心在最后重新加入数据,因为我可以在稍后分开进行。