我正在尝试在SpatialPolygonsDataFrame(info)上组合一个1000x1000m正方形的SpatialPointsDataFrame(网格)来聚合每个网格方块内各点的所有信息。
我尝试了代码:
Set demo_1 = import_demo(1, nb_var)
但我记得这个错误:
combined <- intersect(info, grid)
还有其他方法可以做我想做的事情或解决错误吗?
答案 0 :(得分:4)
错误表明您的记忆力最大化。一种解决方案是分解数据集并以块的形式进行交叉。新的SF
包使用dplyr动词更容易做到这一点。添加一列来定义您的块,然后尝试以下操作:
combined <- info %>%
group_by(chuncks) %>%
do(sf::st_intersection(., grid))
要加快处理速度,您还可以尝试将数据集拆分为一个chuncks列表,然后并行应用st_intersection
函数。这要快得多。
#import packages
library(foreach)
library(doParallel)
#setup parallel backend to use 8 processors
cl<-makeCluster(4)
registerDoParallel(cl)
tmp <- split(info, info$chunks)
# run using foreach
by.chunk <- foreach(df = tmp) %dopar% {
sf::st_intersection(df, grid)
}
# combine list of data.frames
combined <- ldply(by.chunck