我有两个维度为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)
答案 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的评论)