在多个shapefile上应用函数

时间:2012-10-25 16:46:45

标签: r gis plyr shapefile

我想要应用一个函数,无论是我编写的函数,还是来自gArea函数包中的gArea('shapefile')函数(例如rgeos)的函数,我导入的shapefile列表。

我导入了这样的文件:

data <- list.files (getwd() , pattern="shp") 

我尝试使用lapply之类的函数时尝试使用as.listas.data.frame等合并文件,但没有运气。应用于单个导入的shapefile的函数工作正常,但显然对序列吞吐量没有好处。

思考?

2 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情:

library(maptools)
library(rgeos)
sapply(lapply(list.files(pattern="*.shp"), readShapePoly), gArea)

答案 1 :(得分:0)

在@ jmsigner的回答中,我会使用plyr包中的ldply

require(rgeos)
require(plyr)

shp_paths = list.files(pattern = "shp")
shp_files = llply(shp_paths, readShapePoly)
areas = ldply(shp_files, gArea)

我相信ldply还在结果areas data.frame中包含shapefile名称。此外,plyr函数包含内置进度条(请参阅.progress),并且可以轻松并行化。