вызов rnorm с матрицей средних и матрицей стандартных отклонений - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть две матрицы размерности n * p, одна из которых содержит средние значения, а другая содержит sds.

Я хочу сделать что-то вроде rnorm (1, означает, sds) и получить новую матрицу n * p, чтобы каждая ячейка получалась из rnorm (1, означает [i, j], sds [i, j]).

Как мне сделать это без зацикливания?

Я посмотрел на функции из семейства apply, sweep и external, но, несмотря на то, что решение, вероятно, состоит из простых однострочников, я не могу понять это.

means=matrix(1:12,ncol=4)
sds=round(matrix(runif(12,0.1,0.2),ncol=4),2)

1 Ответ

0 голосов
/ 30 апреля 2018

Функция rnorm() может принимать вектор в параметре mean= и вектор в параметре sd=, как вы хотите:

matrix(rnorm(length(means), mean=means, sd=sds), nrow(means))

Если у вас уже есть матрица m с правильными размерами, вы можете сделать:

m[] <- rnorm(length(means), mean=means, sd=sds)

(спасибо @BenBolker за комментарий)

...