我试图制作一个5 x 10矩阵的0s,1s和5s,矩阵中的数字为0,1和5(或16,17,17,因为16 + 17 + 17 = 50)。这就是我到目前为止所做的,但我无法弄清楚如何使0的数量= 1的数量= 5的数量。
r <- 10
c <- 5
m0 <- matrix(0, r, c)
a <- matrix(0, 1, 16)
b <- matrix(1, 1, 17)
c <- matrix(5, 1, 17)
apply(m0, c(1,2), function(x) sample(c(a,b,c),1, replace = FALSE))
答案 0 :(得分:2)
如果你传递sample
函数一个向量,那么它将随机地移动这些数字。因此,您需要做的就是将数字混洗并将它们存储在矩阵中:
set.seed(144)
matrix(sample(rep(c(0, 1, 5), c(16, 17, 17))), 5)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 0 1 1 5 0 5 0 5 1 1
# [2,] 5 0 0 1 0 5 5 5 5 1
# [3,] 5 1 1 1 1 1 5 0 0 5
# [4,] 1 0 0 1 0 0 1 1 0 1
# [5,] 0 5 5 0 1 5 5 5 5 0