我已将一系列SpatialPolygonsDataFrame加载到我的工作区中.每个命名对象有两种"_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))
Run Code Online (Sandbox Code Playgroud)
或者,
mylist <- mget(adm0list, .GlobalEnv)
Run Code Online (Sandbox Code Playgroud)
我确实得到了一个带有sapply方法和使用的对象列表mget(),但我不明白为什么这些列表list()与直接使用对象名称不同.我怀疑这个问题的答案会告诉我为什么ldply+ fortify使用该list()方法而不是其他两个.
您可以使用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 )
Run Code Online (Sandbox Code Playgroud)