显示矩阵的各种 row-/column-wise 排列

Displaying various row-/column-wise permutations of matrix

我有一个包含 5 行和 5 列的数据矩阵,我正在寻找一种方法来显示可以重新排列 table 中的值的可能组合。有没有可以做到这一点的功能?我尝试使用 combn() 但它只返回了一个包含 30 个值的列,这些值与矩阵的顺序相同。

 Data <- matrix(c(1:25),nrow=5,ncol=5)
 Data
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    6   11   16   21
[2,]    2    7   12   17   22
[3,]    3    8   13   18   23
[4,]    4    9   14   19   24
[5,]    5   10   15   20   25

这将为您提供一个可能的排列行值实例:

> apply(Data,1,sample)

     [,1] [,2] [,3] [,4] [,5]
[1,]   21   17    8   19   15
[2,]   11   12   18   14   20
[3,]    6   22   23   24   10
[4,]   16    2    3    9    5
[5,]    1    7   13    4   25

请注意,它可能是您想要的矩阵的转置,因为 apply 总是 returns 它的结果按列优先顺序排列,因此要获得可能预期的结果,您可以这样做:

 t( apply(Data,1,sample) )  
 # a different row permutation since no set.seed()

> t( apply(Data,1,sample) )
     [,1] [,2] [,3] [,4] [,5]
[1,]    6    1   21   11   16
[2,]   12    7   22   17    2
[3,]   23   13    3    8   18
[4,]   14   19    9    4   24
[5,]   20   25   10   15    5

如果您想随机排列列值,请将第二个应用参数更改为 2 并且不要使用 t()