制作随机数矩阵

时间:2017-08-10 00:15:18

标签: r matrix

我试图制作一个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))

1 个答案:

答案 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