如何按比例填充矩阵?

How to fill a matrix by proportion?

我正在尝试创建一个 20x20 矩阵,其中填充了 -1:2 的数字。但是,我不希望它是随机的,而是按我决定的比例。

例如,我希望 0.10 个单元格为 -1,0.60 个为 0,0.20 个为 1,0.10 个为 2。

此代码能够为我提供一个包含我想要的所有值的矩阵,但我不知道如何编辑它以指定我想要的每个值的比例。

r <- 20
c <- 20
mat <- matrix(sample(-1:2,r*c, replace=TRUE),r,c)

我们可以使用 sample

中的 prob 参数
matrix(sample(-1:2,r*c, replace=TRUE, prob = c(0.1, 0.6, 0.2, 0.2)), r, c)
r <- 20
c <- 20

ncell = r * c
val = c(-1, 0.2,  1, 2)
p = c(0.1, 0.6, 0.2, 0.1)
fill = rep(val, ceiling(p * ncell))[1:ncell]

mat <- matrix(data = sample(fill), nrow = r, ncol = c)
prop.table(table(mat))
#> mat
#>  -1 0.2   1   2 
#> 0.1 0.6 0.2 0.1

reprex package (v0.3.0)

于 2019-09-20 创建