2017-08-11 73 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爲您的索引通知。 –