R:为每个属性生成具有不同均值和sd的随机点

时间:2013-07-16 02:51:24

标签: r vectorization

除了使用循环外,R中是否有任何方法可以使用矩阵列的不同均值和标准差来创建矩阵?

例如,我想创建一个3x4矩阵,表示3个点,每个点有4个属性,这样每列(每个属性)都有自己的均值和sd。

2 个答案:

答案 0 :(得分:1)

是的,你可以不用循环。利用R中的矩阵以列主要顺序存储的事实,并复制均值和sd向量以匹配。

means <- c(1, 10, 100, 1000)
sds <- c(0.1, 1, 10, 100)
rows <- 3
cols <- 4
m <- matrix(rnorm(rows*cols, m=rep(means, each=rows), s=rep(sds, each=rows)),
            rows, cols)
m
          [,1]      [,2]      [,3]      [,4]
[1,] 0.9993278 11.694798 105.53191  841.2182
[2,] 0.8945916  9.556729  92.90462 1212.6817
[3,] 0.9889313 10.088022 113.67009  991.2138

答案 1 :(得分:0)

我不确定你在寻找什么,但这可能会有所帮助:

matrix(c(x = rnorm(n=3,mean=0.5,1),
       y = rnorm(n=3,mean=2, 4),
       z = rnorm(n=3, mean=3.5, 10),
         a= rnorm(n=3,mean=5,12)),nrow=3,ncol=4)

           [,1]      [,2]      [,3]       [,4]
[1,]  0.7876793 2.9456827  8.082376  -3.065875
[2,] -0.9956971 4.2766553 14.178532  -5.003888
[3,]  2.1224071 0.7110594  6.744876 -11.006110

注意:由于数据是随机生成的,您可能会下注不同的结果。每列都有自己的均值和标准差。