在 R 中使用循环从列表中写入多个 .shps
Writing multiple .shps from list with loop in R
我有一个包含大约 2000 个 SpatialPolygonDataFrames 的列表 (mylist
),我想将这些 .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
谢谢。
这是一个包含空间点数据帧列表的示例,同样适用于您的空间多边形数据帧列表
首先加载 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]]
我有一个包含大约 2000 个 SpatialPolygonDataFrames 的列表 (mylist
),我想将这些 .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
谢谢。
这是一个包含空间点数据帧列表的示例,同样适用于您的空间多边形数据帧列表
首先加载 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]]