我有一个由5行和5列组成的数据矩阵,我正在寻找一种方法来显示表格中的值可以重新排列的可能组合。有没有可以做到这一点的功能?我尝试使用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
答案 0 :(得分:1)
这将为您提供一个可能的置换行值实例:
> 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
始终以列主要顺序返回其结果,因此要获得可能的预期,您可以这样做:
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
如果要随机置换列值,请将第二个apply参数更改为2,不要使用t()
。