如何按比例填写矩阵?

时间:2019-09-21 02:29:57

标签: r for-loop matrix lapply adjacency-matrix

我正在尝试创建一个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)

2 个答案:

答案 0 :(得分:1)

我们可以使用prob中的sample参数

matrix(sample(-1:2,r*c, replace=TRUE, prob = c(0.1, 0.6, 0.2, 0.2)), r, c)

答案 1 :(得分:1)

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创建