1

私が作成した関数、またはパッケージのgArea関数 (例: gArea('shapefile'))などのパッケージの関数rgeosを、インポートしたシェープファイルのリストに適用したいと考えています。

次のようにファイルをインポートしました。

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

lapplyなどを使用してファイルを結合しようとしたときに、などのas.list関数を使用する方法を使用しようとしましたas.data.frameが、うまくいきませんでした。単一のインポートされたシェープファイルに適用された関数は正常に機能しますが、明らかに深刻なスループットには適していません。

考え?

4

2 に答える 2

3

次のようなことを試すことができます:

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

@jmsignerの回答の行ではldply、plyrパッケージから使用します。

require(rgeos)
require(plyr)

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

結果のdata.frameldplyにシェープファイル名も含まれていると思います。areasさらに、plyr関数にはプログレスバー(を参照.progress)が組み込まれており、簡単に並列化できます。

于 2012-10-27T20:24:17.417 に答える