我有一个矩阵M,如下所示:
M <- matrix(1:6, nrow=2, byrow=TRUE)
1 2 3
4 5 6
我希望能够将这个矩阵的所有可能排列生成为一个列表。在阅读了在R中生成所有不同排列的列表之后,我尝试使用以下代码:
library(combinat)
permn(M)
但是这样只会给我所有的排列方式,而不是我最初期望的2 x 3矩阵。
因此我得到的结果类似于
[[1]]
[1] 1 4 2 5 3 6
[[2]]
[1] 1 4 2 5 6 3
[[3]]
[1] 1 4 2 6 5 3
...
[[720]]
[1] 4 1 2 5 3 6
但我想让第一行和第二行相互区分,所以列表应该像以下这样:
[[1]]
1 2 3
4 5 6
[[2]]
1 3 2
4 5 6
[[3]]
2 3 1
5 4 6
...
我需要获取M的所有可能组合。有没有在R中实现这个目标的方法?
谢谢!
lapply(permn(ncol(M)), function(x) M[, x])
或类似的代码。 - Franklapply(permn(M),matrix,nrow=2)
。 - Ben Bolker