为什么会这样:
问题是sample
命令结构是:
sample(vector of values, how many?, replace = FALSE or TRUE)
在这里,“有多少?” 应该是一个值。由于您提供了 的第二列的全部内容y
,因此它只选择第一个值,3
因此它读作:
set.seed(45) # just for reproducibility
sample(1:99999, 3, replace = F)
对于这个种子,值是:
# [1] 63337 31754 24092
而且由于只有 3 个值,因此您将其绑定到具有 6 行的矩阵,它会“回收”这些值(意思是,它以相同的顺序重复这些值)。所以,你得到:
# [,1] [,2] [,3]
# [1,] 1 3 63337
# [2,] 1 3 31754
# [3,] 1 3 24092
# [4,] 7 1 63337
# [5,] 8 2 31754
# [6,] 8 2 24092
看到值重复。对于您显示的矩阵,我不知道它是如何7,1,2
发生的。作为矩阵的第一个值y[,2] = 3
。
你应该怎么做:
y <- cbind(y, sample(1:99999, nrow(y), replace = FALSE))
这要求在不替换的情况下sample
生成(此处)值。nrow(y) = 6
这将生成长度为 6 的不相同的值,并将绑定到您的 matrix y
。