【发布时间】:2019-12-15 01:32:33
【问题描述】:
我有一个包含多个列表的列表,这些列表都具有相同的结构:
ls <- list(
one = list(df = data.frame(var1_1 = c(1, 1, 1),
var1_2 = c('a', 'a', 'a')),
ls = list(n_df_1 = data.frame(var3_1 = c('x', 'x', 'x'),
var3_2 = c(4, 4, 4))),
name = c("one", "one", "one")),
two = list(df = data.frame(var1_1 = c(1, 1, 1),
var1_2 = c('a', 'a', 'a')),
ls = list(n_df_1 = data.frame(var3_1 = c('x', 'x', 'x'),
var3_2 = c(4, 4, 4))),
name = c("two", "two", "two")))
我想合并所有这些嵌套列表,如下所述:Merge Two Lists in R
如果我这样做,它完全符合我的要求:
merged <- mapply(c, ls[[1]], ls[[2]], SIMPLIFY = FALSE)
问题在于,主列表 (ls) 并不总是只有两个嵌套列表。如何让这段代码更加模块化?
我试图创建一个包含所有嵌套列表索引的向量:
sapply(seq_along(ls), function(x) paste0("ls[[", x, "]]"))
哪个输出这个:
[1] "ls[[1]]" "ls[[2]]"
我想我可以取消引用这些字符向量,以便 R 将它们视为对象。但我不知道该怎么做(如果可能的话)。我为此查看了 tidy eval,但我不知道这是否是这样做的方法。
有什么建议吗?
【问题讨论】:
-
请不要将您的列表命名为
ls。 R中有一个预定义函数ls,您可以通过重新定义它来覆盖它