2013-10-08 12 views
1

結合如果我用含有列表N和M,其中包含相等數目的元素的列表的起始:結合中的R的列表,而不事先知道列表的數目,以

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將具有的列表數量,我該怎麼做和上面一樣的事情?

回答

1

嘗試使用tapply

tapply(U, inds, list) 

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

有可能是一個更好的解決您的問題,但如果你硬是要「做同樣的事情,但不知道的大小A「,您可以執行以下操作:

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

+1 - 較短的就是'do.c all(Map,c(list,A))' – flodel

+0

@ flodel,這可能值得張貼爲答案 –