在不事先知道要组合的列表数量的情况下组合R中的列表

时间:2013-10-08 21:46:52

标签: r list

如果我从包含列表N和M的列表A开始,列表N和M包含相同数量的元素:

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的列表数量,我该如何做同上面的事情?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

尝试使用tapply

 tapply(U, inds, list) 

哪里

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