在R中合并列表,而不事先知道要合并的列表数

在R中合并列表,而不事先知道要合并的列表数,r,list,R,List,如果我从一个包含列表N和M的列表a开始,其中包含相同数量的元素: A = list( N=list( a=c(1,1), b=c(2,2)), M=list( a=c(1,1), b=c(2,2)) ) 我将执行以下操作,将列表N和M中的每个元素合并到新列表中 B = mapply( FUN=list, A[[1]], A[[2]], SIMPLIFY=FALSE ) 得到 >B $a $a[[1]] [1] 1 1 $a[[2]] [1] 1 1 $b $b

如果我从一个包含列表N和M的列表a开始,其中包含相同数量的元素:

A = list( N=list( a=c(1,1), b=c(2,2)),
          M=list( a=c(1,1), b=c(2,2)) )
我将执行以下操作,将列表N和M中的每个元素合并到新列表中

B = mapply( FUN=list, A[[1]], A[[2]], SIMPLIFY=FALSE )
得到

>B
$a
$a[[1]]
[1] 1 1

$a[[2]]
[1] 1 1


$b
$b[[1]]
[1] 2 2

$b[[2]]
[1] 2 2

如果我事先不知道列表A将有多少个列表,我怎么能做与上面相同的事情

尝试使用
tapply

 tapply(U, inds, list) 
在哪里

 U    <- unlist(A, recursive=FALSE)
 inds <- rep(seq_along(A[[1]]), length(A))

U对于您的问题,可能有更好的解决方案,但如果您确实想“做同样的事情,但不知道
a
”的大小,您可以执行以下操作:

do.call(function(...) mapply(..., FUN = list, SIMPLIFY = FALSE), A)

@弗洛德尔,这也许值得作为一个答案发表