如何简化R中的嵌套列表?

nac*_*cab 7 r list

我有一个这样的嵌套列表:

nested_list <- list(a = c(1,2),
          b = list(
            c = c(3,4),
            d = list(
                e = c(5,6,7)
            )))
Run Code Online (Sandbox Code Playgroud)

我想简化它,使它看起来像这样(只有一个级别,使用冒号分组的嵌套名称):

simplified_list <- list(a = c(1,2),
          "b:c" = c(3,4),
          "b:d:e" = c(5,6,7)
         )
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

G. *_*eck 8

这种方法具有很短的优点.它不使用任何包.它假定输入名称不包含尾随数字:

u <- unlist(nested_list)
res <- tapply(u, sub("\\d+$", "", names(u)), unname)
Run Code Online (Sandbox Code Playgroud)

赠送:

> res
$a
[1] 1 2

$b.c
[1] 3 4

$b.d.e
[1] 5 6 7
Run Code Online (Sandbox Code Playgroud)

如果重要的是名称由以下分隔:而不是.然后加上这个:

names(res) <- chartr(".", ":", names(res))
Run Code Online (Sandbox Code Playgroud)