我有 3 个数据集,我排列了 10 倍。数据集的每个排列在 3 个矩阵中构成一列(每个数据集一个矩阵)。这 3 个矩阵 ( m1
, m2
, m3
) 在一个列表中L
。我想为每个条目(在本例中为 4)询问所有可能的组合(10x10x10=1000)。我使用 expand.grid 来提供跨另一个矩阵行中的 3 个矩阵的所有列调用组合M
:
M<-expand.grid(seq(1:10),seq(1:10),seq(1:10))
这是我在列表中的数据:
m1<-matrix(c(1,2,1,0,3,2,1,2,3,4),nrow=4, ncol=10)
m2<-matrix(c(m1[1,]),nrow=4,ncol=10)
m3<-matrix(c(m1[2,]),nrow=4,ncol=10)
L<-list(m1, m2, m3)
你能帮我使用do.call
, cbind
, lapply
/sapply
从 M 中有效地检索列坐标,以询问 L 中包含的 3 个矩阵中的相应列,并将它们绑定到一个新矩阵,如下所示:
m.res<-for (i in 1:nrow(M) { "get" L[[1:3]][M[i,]] }
对于i=1
,m.res
将产生:
1 1 2
2 3 2
1 3 4
0 1 0
我显然需要lapply
/的教程,sapply
因为这不应该这么难。