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)
这正是我真正想要的。
谢谢!
如何从 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)
这正是我真正想要的。
谢谢!