R - SpatialPoints 列表中的 SpatialPointsDataFrame

R - SpatialPointsDataFrame from a list of SpatialPoints

如何从 SpatialPoints 列表创建 SpatialPointsDataFrame?

下面是包含 SpatialPoints 的列表的代码:。

SP1 <- SpatialPoints(cbind(1,5))
SP2 <- SpatialPoints(cbind(2,4))
SP3 <- SpatialPoints(cbind(3,3))

SP.l<-list(SP1,SP2, SP3)

我正在寻找的是一种从列表中提取 SpatialPoints 并从中创建 SpatialPointsDataFrame 的方法。

使用以下代码,我可以从列表中获取单个 SpatialPoints:

coords_3 = SP.l[[3]]@coords
data_3 = as.data.frame(SP.l[[3]])

SPDF_3 <- SpatialPointsDataFrame(coords=coords_3, data=as.data.frame(data_3))

不过我想一次性收到。 可能是这样的:

SP <- SpatialPoints(lapply(1:length(lidR.clip.SP.l), function(i) {

...

编辑: 缺少的是:

SP.l <- do.call("rbind", SP.l)

这正是我真正想要的。

谢谢!

因为没有像 hrbrmstr 这样的最小工作示例。你需要提供一个。现在,我使用 GISTools 包中的示例数据并演示一种方法。包里有个数据集叫newhaven。 breach 是数据。我复制了它并创建了 foo,其中 class 是 SpatialPoints。我使用 foo.

创建了两个列表元素

使用您的代码,我遍历了每个列表元素并将 SpatialPoints 转换为 SpatialPointsDataFrame。我希望你能弄清楚如何将以下代码应用到你的案例中。

library(GISTools)

data(newhaven)  
foo <- breach

mylist <- list(foo1 = breach[1:10, ],
               foo2 = breach[11:20, ])

lapply(1:length(mylist), function(x){
    SpatialPointsDataFrame(coords = mylist[[x]]@coords,
                           data = as.data.frame(mylist[[x]]))
})

如果你想绑定所有的SPDF,那么你可以试试下面的方法。

do.call(rbind, lapply(1:length(mylist), function(x){
                   SpatialPointsDataFrame(coords = mylist[[x]]@coords,
                                          data = as.data.frame(mylist[[x]]))
          })
)

缺少的是:

SP.l <- do.call("rbind", SP.l)

这正是我真正想要的。

谢谢!