R 提取元素名称相似的嵌套列表元素

R 提取元素名称相似的嵌套列表元素,r,list,R,List,我有一个嵌套列表,由函数生成。最上面的元素名将在更下面的元素名中重复 $`1` $`1`$`1` [1] 0 0 0 0 0 0 0 1 0 $`1`$`2` [1] 0 0 0 0 0 0 0 0 0 $`2` $`2`$`1` [1] 0 0 0 1 1 0 0 0 0 $`2`$`2` [1] 0 1 0 0 0 1 0 0 0 有没有一种方法可以使用apply函数(或其他什么)来提取元素和子元素名称匹配的向量。例如$1$1和$2$2。我有一个巨大的列表(4000个元素和4000个

我有一个嵌套列表,由函数生成。最上面的元素名将在更下面的元素名中重复

$`1`
$`1`$`1`
[1] 0 0 0 0 0 0 0 1 0

$`1`$`2`
[1] 0 0 0 0 0 0 0 0 0

$`2`
$`2`$`1`
[1] 0 0 0 1 1 0 0 0 0

$`2`$`2`
[1] 0 1 0 0 0 1 0 0 0
有没有一种方法可以使用apply函数(或其他什么)来提取元素和子元素名称匹配的向量。例如$
1
$
1
和$
2
$
2
。我有一个巨大的列表(4000个元素和4000个子元素),因此效率是必须的

或者-我通过使用“melt()”,找到了摆脱这种混乱局面的方法,但它对于我的电视机来说太消耗了。但是,如果有人知道如何复制这种效果——给出一个包含3列的数据框——一列为elementname,一列为subelement name,一列为vector——这也会起作用


问候和感谢:)

这是一种获取所需向量列表的方法:

lapply(names(dat), function(x) dat[[x]][[x]])
在数据帧中:

do.call("rbind",
        lapply(names(dat),
               function(x) data.frame(element = x,
                                      subelement = x,
                                      values = dat[[x]][[x]])
        )
)

您可以
unlist
不递归地删除顶级列表结构,然后在此结果的名称上使用regex辅助子集设置

l <- list(`1`=list(`1`=rpois(6,1),`2`=rep(0,6)),`2`=list(`1`=rep(0,6),`2`=rpois(6,1)))
l2 <- unlist(l,recursive=F)
l2[grepl("([0-9]+)[.]\\1",names(l2))]
$`1.1`
[1] 2 0 2 4 1 0

$`2.2`
[1] 0 0 0 2 1 0

l第一个代码给出了一个元素数正确的列表,但它们都是空的,而最后一个代码给出了一个消息,我猜这是因为它们的长度不相等:data.frame(element=x,subelement=x,values=results[[x]][[x]]):参数意味着不同的行数:1,0.第二个命令的错误是由于
NULL
值引起的,但不是由于长度不等。@EndreGrünerOfstad
dat[[1'][[1']]
的输出是什么?但我没有任何NULL值:P或,当列表是没有特定的名称,所以他们的元素和子元素的名称只是1,2,3…我不知道这是否重要。下面是输出:NULL:PDon子列表的名称和向量是否始终匹配?关系是1:1吗?