2011-10-03 30 views
1

我有两个矩阵的列数相同,但不同的行数:转换两个矩阵到使用列表应用

a <- cbind(runif(5), runif(5)) 
b <- cbind(runif(8), runif(8)) 

我想这些在同一个列表关联,从而第一的ab列相互关联,等等:

my_result <- list(list(a[,1], b[,1]), list(a[,2], b[,2])) 

所以结果是这样的:

> print(my_result) 
[[1]] 
[[1]][[1]] 
[1] 0.9440956 0.7259602 0.7804068 0.7115368 0.2771190 

[[1]][[2]] 
[1] 0.4155642 0.1535414 0.6983123 0.7578231 0.2126765 0.6753884 0.8160817 
[8] 0.6548915 

[[2]] 
[[2]][[1]] 
[1] 0.7343330 0.7751599 0.4463870 0.6926663 0.9692621 

[[2]][[2]] 
[1] 0.5708726 0.1234482 0.2875474 0.4760349 0.2027653 0.5142006 0.4788264 
[8] 0.7935544 

我不知道如何做到这一点没有for循环,但我很确定这里可以使用一些*pply魔法。

任何方向将不胜感激。

回答

2

我不知道你正在寻找一个解决方案是如何通用(任意矩阵的数量,有能力通过矩阵等的列表),但这种方式更适合您的具体的例子:

lapply(1:2,function(i){list(a[,i],b[,i])})