如何从SpatialPoints列表创建SpatialPointsDataFrame?
合并列表中的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,但目前只能逐个处理单个元素,比如处理第三个元素的代码:
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))
我尝试过用lapply来批量处理,但没找到合适的写法,比如:
SP <- SpatialPoints(lapply(1:length(lidR.clip.SP.l), function(i) { ...
解决方案
最终找到了非常简洁的实现方式:使用do.call()调用rbind(),一次性合并列表中的所有SpatialPoints对象:
SP.l <- do.call("rbind", SP.l)
执行这段代码后,列表中的所有SpatialPoints会被合并为一个单独的对象,直接就可以用来创建SpatialPointsDataFrame,完全满足批量处理的需求!
内容的提问来源于stack exchange,提问作者N'ya
相关产品推荐
相关产品推荐

