在R中取消列出多个列表

时间:2016-06-07 14:31:11

标签: r list loops foreach

如何一次取消列出多个列表?

鉴于我想要取消列出的一系列列表(通常超过10个):

ice_2000 = list(seq(1,5,1),seq(6,10,1),seq(11,15,1))
ice_1990 = list(seq(1,5,1),seq(6,10,1),seq(11,15,1))
ice_1980 = list(seq(1,5,1),seq(6,10,1),seq(11,15,1))

我尝试过类似的事情:

sample.yrs = c(2000,2005,2010)

nam <- paste("ice",sample.yrs, sep = "_") 

library(foreach) 


foreach(x = nam) %do% { 

temp.df <- as.data.frame(do.call("rbind",x))
assign(paste("df",x, sep="_"), temp.df )}

如何通过矢量中的名称来调用单个列表,使它们被识别为列表对象?

1 个答案:

答案 0 :(得分:4)

您正在寻找get

get("ice_2000")

但为什么不简单:

lapply(list(ice_2000, ice_1990, ice_1980) , unlist)

将结构存储在列表中而不是随机存储在内存中然后尝试使用丑陋的粘贴/字符串操作来获取它们以及获取...

如果您需要更正此结构默认值,您可以执行以下操作:

library(magrittr)

good = ls(pattern="ice_*") %>% lapply(get) %>% lapply(function(u) do.call(rbind, u))