rbindlist 的空间等价物?

Spatial equivalent of rbindlist?

我需要在一个循环中绑定 SpatialPolygonDataFrames 负载。这些是通过缓冲道路文件创建的。但是,由于 class SpatialLinesDataFrame 的 'roads' 文件有 15000 行长,rbind 函数会逐渐变慢。如果它们是数据帧,我会使用 rblindlist 来加快速度。但这不适用于 sp 对象(对吗?)。有人有好主意吗?

for (i in 1:nrow(roads)) {

  temp <- gDifference(gBuffer(roads[i,], byid = T, width =  15, capStyle = 'ROUND'), 
                  gBuffer(roads[i,], byid = T, width =  10, capStyle = 'ROUND'))

  slot(slot(temp, "polygons")[[1]], "ID") <- as.character(roads[i,]$oid)

  if (i == 1) {difference <- temp}

  if (i > 1) {difference <- rbind(difference, temp)}

  rm(temp)
  print(i)

}

谢谢

詹姆斯

我不确定你是否需要循环。您可以使用包 sf。 这是您想要实现的(我认为)的示例:

library(mapview) # for the example lines data
library(sf)
trails$diff = st_geometry(st_buffer(trails, dist = 1500)) / st_geometry(st_buffer(trails, 1000))
mapview(trails$diff)

这是您想要的结果吗?如果没有,您可能需要提供一个可重现的示例。