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

calling rnorm with a matrix of means and a matrix of standard deviations

我有两个 n*p 维矩阵,一个包含均值,一个包含 sds。

我想做类似 rnorm(1, means, sds) 的事情并得到一个新矩阵 n*p 以便每个单元格都来自 rnorm(1, means[i,j], sds[i,j] ).

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

我查看了 apply 系列、sweep 和 outer 中的函数,但尽管解决方案可能是一个简单的单行代码,但我无法弄清楚。

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

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

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

如果您已经有了一个尺寸合适的矩阵 m,那么您可以这样做:

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

(感谢@BenBolker 的评论)