これが発生する理由:
問題は、sample
コマンド構造が次のとおりであるということです。
sample(vector of values, how many?, replace = FALSE or TRUE)
ここで、「いくつ?」ONE値であると想定されています。の2番目の列全体を指定するため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の同一でない値が生成され、マトリックスにバインドされますy
。