1

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

我导入了这样的文件:

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

lapply一旦我尝试通过使用等合并文件,我就尝试使用使用诸如等函数的方法as.listas.data.frame但没有运气。应用于单个导入的 shapefile 的函数可以正常工作,但显然对严重的吞吐量没有好处。

想法?

4

2 回答 2

3

你可以尝试这样的事情:

library(maptools)
library(rgeos)
sapply(lapply(list.files(pattern="*.shp"), readShapePoly), gArea)
于 2012-10-25T17:11:45.393 回答
0

在@jmsigner 的回答中,我将从ldplyplyr 包中使用:

require(rgeos)
require(plyr)

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

我相信这ldply还包括生成的areasdata.frame 中的 shapefile 名称。此外,plyr函数包括一个内置的进度条(请参阅 参考资料.progress),并且可以轻松并行化。

于 2012-10-27T20:24:17.417 回答