我想生成一个包含0.1和2的矩阵,并在不同的比例中使用该值,例如90%1、5%0和5%2。
我可以使用以下数字生成矩阵:
test <- matrix(0, 10, 10)
test[] <- apply(test, c(1,2), function(x) sample(c(0,1,2),1))
但是我不知道如何生成1 90%的时间,0和2 5%的时间的矩阵采样。
你知道我该怎么做到吗?
答案 0 :(得分:3)
这应该给出您想要的:
v <- rep(c(0, 1, 2), round(10 * 10 * c(0.05, 0.9, 0.05)))
matrix(sample(v), nrow = 10, ncol = 10)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 1 1 1 1 1 1 1 1 1 1
# [2,] 1 1 2 1 1 1 1 1 1 1
# [3,] 2 1 1 0 1 1 1 1 2 1
# [4,] 1 1 1 1 1 1 1 1 1 1
# [5,] 1 0 1 1 1 2 1 1 1 1
# [6,] 1 1 1 1 1 1 1 1 1 1
# [7,] 1 1 1 0 1 1 1 1 1 1
# [8,] 1 1 1 1 1 1 1 0 1 1
# [9,] 1 1 0 1 1 1 1 1 1 2
# [10,] 1 1 1 1 1 1 1 1 1 1