从R列表中写入多个.shps
问题描述:
我有一个列表(mylist
)约2000个SpatialPolygonDataFrames,我想将这些.shps导出到一个文件夹(我的目录)中。我正在尝试使用循环来访问列表,但它似乎不工作。我怎样才能做到这一点?从R列表中写入多个.shps
for (i in 1:length(mylist)){
writeOGR(mfiles,i,"mfiles",i,layer = "mfiles",i, driver="ESRI Shapefile",overwrite_layer = T)
}
Error: is.logical(verbose) is not TRUE
谢谢。
答
这里是spatialpointsdataframes列表的例子,同样会为你spatialpolygondataframes清单工作
先装SP和rgdal:
library(sp)
library(rgdal)
然后创建两个虚拟SpatialPointsDataFrames:
coords <- cbind(c(1, 2, 3), c(1, 2, 3))
data <- data.frame(name = c("foo", "bar", "blah"))
ob1 = SpatialPointsDataFrame(coords, data)
coords <- cbind(c(4, 5, 6), c(4, 5, 6))
data <- data.frame(name = c("cookie", "cheese", "apple"))
ob2 = SpatialPointsDataFrame(coords, data)
然后把这两个列表:
mfiles <- list(ob1, ob2)
str(mfiles)
现在你可以使用几乎所有你提出同样的代码:
for (i in 1:length(mfiles)){
writeOGR(mfiles[[i]],
paste0("mfiles", i, ".shp"),
layer = "mfiles",
driver="ESRI Shapefile",
overwrite_layer = T)
}
list.files()
你被提交列表本身的writeOGR功能,您应该索引列表在循环双括号:[I] ]
感谢@trosendal为您的索引通知。 –