3

我已将一系列 SpatialPolygonsDataFrames 加载到我的工作区中。每个命名对象都有"_adm0","_adm1""_adm2"附加到国家/地区缩写。对于德国,这看起来像"DEU_adm0""DEU_adm1""DEU_adm2"

我正在尝试将所有“_adm0”数据帧收集到一个列表中,然后可以通过 ldply 和 fortify 对其进行操作。我可以这样做,

mylist <- list(DEU_adm0, FRA_adm0, RUS_adm0, etc...)我在其中写下我想列入列表的所有国家。

但是,如何"_adm0"按模式抓取所有数据帧?

我从下面的代码开始,但写出来时并没有给我想要的结果

adm0list <- ls()[str_detect(ls(), "_adm0")]

mylist   <- sapply(adm0list, function(x) get(x))

或者,

mylist   <-  mget(adm0list, .GlobalEnv)

我确实使用该sapply方法和 using获得了一个对象列表mget(),但我不明白为什么这些列表list()与直接使用对象名称不同。我怀疑这个问题的答案会告诉我为什么ldply+fortify与该list()方法一起工作,而不是其他两个。

4

1 回答 1

5

您可以使用pattern参数,ls然后将@提取器用于对象的data.frame一部分SPDF...

#  Construct list of objects wtih mget
ll <- mget( ls( pattern = "_adm0" ) )

#  Extract data.frames
out <- lapply( ll , function(x) x@data )
于 2013-10-14T16:06:31.290 回答