2017-08-10 103 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