2017-08-10 66 views
2

我试图做一个5 x 10矩阵0s,1s和5s在矩阵中有相同数量的0s,1s和5s(或者自16 + 17以来的16,17,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)) 

回答

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