将Shapefile加载到R中的列表中

时间:2014-03-27 13:05:08

标签: r list iteration shapefile rgdal

我需要在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'

1 个答案:

答案 0 :(得分:1)

单个方括号用于子集列表。双方括号用于获取和设置列表元素。

所以使用双方括号。演示:

> a=list(1,2,3,4)

a[2]是一个包含一个元素的列表:

> a[2]
[[1]]
[1] 2

a[[2]]就是那个元素:

> a[[2]]
[1] 2