我想从正态分布中生成25个正常样本 . 我希望以一种聪明的方式做到这一点,我没有将所有这些样本作为单独的实体 .
这是我到目前为止对该部分的代码
data <- replicate(25, rnorm(100))
到目前为止,这是因为它生成了25个100的样本 . 当提取数据的均值和sd时,显然这些值是针对整个数据集的 .
所以我的问题是如何对25个样本中的每个样本进行分解并确定 mean 和 sd ?
mean
sd
apply(x, 2, mean) 的一个很好的替代方案是 colMeans(x) ,但是 apply(x, 2, sd) 没有这样的选择:(但是你也可以使用apply函数一次性获得均值和标准差,让我们这样做:
apply(x, 2, mean)
colMeans(x)
apply(x, 2, sd)
set.seed(42) x <- replicate(25, rnorm(100)) Stats <- t(apply(x, 2, function(x) c(Mean=mean(x), Sd=sd(x)))) Stats Mean Sd [1,] 0.032514816 1.0413570 [2,] -0.087483707 0.9041735 [3,] -0.010368172 1.0170123 [4,] 0.032936464 0.8761978 [5,] -0.117830506 1.0199916 [6,] 0.002363510 1.0633145 [7,] -0.086747228 0.9755756 [8,] -0.169291497 0.8830939 [9,] 0.061457015 1.0377577 [10,] 0.084205039 1.1804565 [11,] -0.129164759 1.0080920 [12,] 0.039991367 0.9814254 [13,] 0.078980115 0.9719501 [14,] -0.148572682 0.9125126 [15,] -0.048566771 0.9562642 [16,] 0.006789862 1.0347380 [17,] 0.274102604 1.0212837 [18,] -0.113169899 0.9988576 [19,] 0.151418057 0.9830082 [20,] -0.164987838 0.9348188 [21,] -0.035644377 1.0214245 [22,] -0.041569005 1.0159495 [23,] 0.051384229 1.0944096 [24,] 0.073521001 0.9084400 [25,] 0.021893835 0.9438906
使用 apply 清除摘要 .
apply
set.seed(42) x <- replicate(25, rnorm(100))
由于您的数据是列式矩阵,因此您需要将函数 apply 用于第二维 .
apply(x, 2, mean) [1] 0.032514816 -0.087483707 -0.010368172 0.032936464 [5] -0.117830506 0.002363510 -0.086747228 -0.169291497 [9] 0.061457015 0.084205039 -0.129164759 0.039991367 [13] 0.078980115 -0.148572682 -0.048566771 0.006789862 [17] 0.274102604 -0.113169899 0.151418057 -0.164987838 [21] -0.035644377 -0.041569005 0.051384229 0.073521001 [25] 0.021893835 apply(x, 2, sd) [1] 1.0413570 0.9041735 1.0170123 0.8761978 1.0199916 [6] 1.0633145 0.9755756 0.8830939 1.0377577 1.1804565 [11] 1.0080920 0.9814254 0.9719501 0.9125126 0.9562642 [16] 1.0347380 1.0212837 0.9988576 0.9830082 0.9348188 [21] 1.0214245 1.0159495 1.0944096 0.9084400 0.9438906
2 回答
apply(x, 2, mean)
的一个很好的替代方案是colMeans(x)
,但是apply(x, 2, sd)
没有这样的选择:(但是你也可以使用apply函数一次性获得均值和标准差,让我们这样做:使用
apply
清除摘要 .由于您的数据是列式矩阵,因此您需要将函数
apply
用于第二维 .