1

如果我从包含列表 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 将拥有的列表数量,我该如何做与上述相同的事情?

4

2 回答 2

2

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

do.call(function(...) mapply(..., FUN = list, SIMPLIFY = FALSE), A)
于 2013-10-08T22:00:35.793 回答
1

尝试使用tapply

 tapply(U, inds, list) 

在哪里

 U    <- unlist(A, recursive=FALSE)
 inds <- rep(seq_along(A[[1]]), length(A))
于 2013-10-08T21:57:18.290 回答