Как заполнить матрицу пропорционально? - PullRequest
3 голосов
/ 21 сентября 2019

Я пытаюсь создать матрицу 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 ]

1 голос
/ 21 сентября 2019
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

Создано в 2019-09-20 пакетом представ (v0.3.0)

1 голос
/ 21 сентября 2019

Мы можем использовать аргумент prob из sample

matrix(sample(-1:2,r*c, replace=TRUE, prob = c(0.1, 0.6, 0.2, 0.2)), r, c)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...