如果我从包含列表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的列表数量,我该如何做同上面的事情?
答案 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))