【发布时间】:2016-11-22 09:14:28
【问题描述】:
假设我有一个向量,
vec <- c(rep(1,4),rep(2,4),rep(3,4),rep(4,4),rep(5,4),rep(6,4),rep(7,4),rep(8,4),rep(9,4))
我排列成一个 6x6 的矩阵。
mat <- matrix(vec,6,byrow=T)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 1 1 2 2
[2,] 2 2 3 3 3 3
[3,] 4 4 4 4 5 5
[4,] 5 5 6 6 6 6
[5,] 7 7 7 7 8 8
[6,] 8 8 9 9 9 9
我希望将数字随机排列,以使它们对于每一行和每一列都是唯一的。或者换句话说,任何行或列中都不能有重复的数字。
向量的长度,向量的元素,矩阵的行数和列数都是固定的。唯一可以改变的是数字的位置。
我将如何通过计算解决这个问题?
以下是一种可能的正确结果(手动完成)。请注意,没有行或列有任何重复的数字。
res <- matrix(c(3,1,2,5,7,8,6,8,5,2,9,4,8,6,7,4,3,5,2,9,3,1,6,7,1,4,9,7,5,6,4,2,1,9,8,3),nrow=6,byrow=T)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 3 1 2 5 7 8
[2,] 6 8 5 2 9 4
[3,] 8 6 7 4 3 5
[4,] 2 9 3 1 6 7
[5,] 1 4 9 7 5 6
[6,] 4 2 1 9 8 3
table(res)
res
1 2 3 4 5 6 7 8 9
4 4 4 4 4 4 4 4 4
【问题讨论】:
-
这实际上更像是一个 R 编码问题,而不是一个关于统计的问题。这里不在主题范围内,但应该在 Stack Overflow 上讨论主题。如果您稍等片刻,我们可以为您迁移。
-
有趣。我在SO上发布了这个。很多人反对说这个问题不清楚,不是编程问题等,不适合 SO。于是我在 CrossValidated 上发布了,现在又迁移到 SO 了。
-
人们的看法有些奇怪。 “如何让 R 给出排列”和“如何重新排列矩阵”显然是编码问题,而不是关于统计数据,IMO。
标签: r matrix combinatorics