我需要在R的项目中使用几个shapefile。
因此,我想迭代readOGR函数,将这些文件加载到列表中。稍后我可以使用plyr或构造一个循环来对列表中的每个shapefile执行相同的操作。
这是一个可重复的最小例子:
library("rgdal")
setwd("your.path.here")
download.file("http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_0_countries.zip","ne_10m_admin_0_countries.zip")
unzip("ne_10m_admin_0_countries.zip")
# works like this:
my.shapefile<-readOGR("your.path.here","ne_10m_admin_0_countries")
plot(my.shapefile)
# does not work like this
shapefile.list<-list(length=20)
shapefile.list[1]<-readOGR("your.path.here","ne_10m_admin_0_countries")
plot(shapefile.list[1])
错误讯息是
Error in xy.coords(x, y, xlabel, ylabel, log) : 'x' is a list, but does not have components 'x' and 'y'
答案 0 :(得分:1)
单个方括号用于子集列表。双方括号用于获取和设置列表元素。
所以使用双方括号。演示:
> a=list(1,2,3,4)
a[2]
是一个包含一个元素的列表:
> a[2]
[[1]]
[1] 2
a[[2]]
就是那个元素:
> a[[2]]
[1] 2