用一个均值矩阵和一个标准差矩阵调用rnorm

时间:2018-04-30 14:02:24

标签: r matrix normal-distribution

我有两个维度为n * p的矩阵,一个包含平均值,另一个包含sds。

我想做一些像rnorm(1,means,sds)这样的东西并获得一个新的矩阵n * p,这样每个单元格都来自rnorm(1,表示[i,j],sds [i,j])。

如何在不循环的情况下执行此操作?

我查看了应用系列中的函数,扫描和外部,但尽管解决方案可能只是一个简单的单行程序,但我无法弄明白。

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

1 个答案:

答案 0 :(得分:1)

函数rnorm()可以根据需要在参数mean=中使用向量,在参数sd=中使用向量:

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

如果您已经有一个具有正确尺寸的矩阵m,那么您可以这样做:

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

(请注意@BenBolker的评论)