2017-08-11 85 views
0

我有一个列表(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 

谢谢。

回答

1

这里是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] ]

+0

感谢@trosendal为您的索引通知。 –