我有 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因为这不应该这么难。