【发布时间】:2018-06-10 23:41:50
【问题描述】:
我想创建一个 n 行 m 列的随机矩阵。我希望从一组数字中随机选择矩阵每一行的元素。我想在每一行中至少有一个不同的数字。我不希望一行的所有元素都相同。我曾经问过我的问题here,但我不知道为什么我提供的功能仍然给我一些包含所有相同元素的行。如何调整此功能?
f2 <- function(x, n, m) {
if ( length(unique(x)) == 1 ) {
stop('x has only one unique element.', call. = FALSE)
}
result <- t(replicate(n, sample(x, m, replace = TRUE)))
while ( any(apply(result, 1, function(x) length(unique(result)) == 1)) ) {
result <- t(replicate(n, sample(x, m, replace = TRUE)))
}
return(result)}
这是一个例子:
x <- c(1, 1.5, 2, 3,4)
set.seed(123456)
matall=f2(x, 1200, 4)
View(matall)
[,1] [,2] [,3] [,4]
[1,] 3.0 3.0 1.5 1.5
[2,] 1.5 1.0 2.0 1.0
[3,] 4.0 1.0 3.0 2.0
[4,] 4.0 4.0 4.0 4.0
【问题讨论】:
-
请看示例中的第 4 行。所有元素都是 4。我不希望这种情况发生。我希望至少有一个元素连续不同。