我想要应用一个函数,无论是我编写的函数,还是来自gArea
函数包中的gArea('shapefile')
函数(例如rgeos
)的函数,我导入的shapefile列表。
我导入了这样的文件:
data <- list.files (getwd() , pattern="shp")
我尝试使用lapply
之类的函数时尝试使用as.list
,as.data.frame
等合并文件,但没有运气。应用于单个导入的shapefile的函数工作正常,但显然对序列吞吐量没有好处。
思考?
答案 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
),并且可以轻松并行化。