在R中合并列表,而不事先知道要合并的列表数
如果我从一个包含列表N和M的列表a开始,其中包含相同数量的元素:在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
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)
@弗洛德尔,这也许值得作为一个答案发表