行列の列に異なる平均と標準偏差を使用して行列を作成するために、ループ以外のRに方法はありますか?
たとえば、すべての列 (すべての属性) が独自の平均値と sd を持つように、それぞれ 4 つの属性を持つ 3 つのポイントを表す 3x4 マトリックスを作成したいと考えています。
行列の列に異なる平均と標準偏差を使用して行列を作成するために、ループ以外のRに方法はありますか?
たとえば、すべての列 (すべての属性) が独自の平均値と sd を持つように、それぞれ 4 つの属性を持つ 3 つのポイントを表す 3x4 マトリックスを作成したいと考えています。
はい、ループなしで実行できます。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
あなたが何を探しているのかわかりませんが、これが役立つかもしれません:
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
注: データはランダムに生成されるため、異なる結果に賭ける可能性があります。各列には、独自の平均と標準偏差があります。