如何按比例填充矩阵?
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 创建
我正在尝试创建一个 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 创建