R 循环嵌套采样
我的循环知识非常少,但我目前编写了一个循环,它从三个向量(small.dens、med.dens和large.dens)获取值,每个向量有17个值。我有循环设置随机选择2个值,然后3,然后4。。。一直到17岁。它使用这些值计算平均误差和标准误差(使用plotrix软件包)。然后将这些计算出的平均值和标准误差放入新向量(small.density、small.stanerr、medium.density、medium.stanerr、large.density和large.stanerr)。接下来,与循环分开,我将这些向量组合成一个数据帧R 循环嵌套采样,r,loops,nested,sample,R,Loops,Nested,Sample,我的循环知识非常少,但我目前编写了一个循环,它从三个向量(small.dens、med.dens和large.dens)获取值,每个向量有17个值。我有循环设置随机选择2个值,然后3,然后4。。。一直到17岁。它使用这些值计算平均误差和标准误差(使用plotrix软件包)。然后将这些计算出的平均值和标准误差放入新向量(small.density、small.stanerr、medium.density、medium.stanerr、large.density和large.stanerr)。接下来
library(plotrix)
small.density = rep(NA,16)
small.stanerr = rep(NA,16)
medium.density = rep(NA,16)
medium.stanerr = rep(NA,16)
large.density = rep(NA,16)
large.stanerr = rep(NA,16)
for(i in 2:17){
xx=sample(small.dens,i,replace=TRUE)
small.density[[i]] = mean(xx)
small.stanerr[[i]] = std.error(xx)
yy = sample(med.dens, i, replace=TRUE)
medium.density[[i]] = mean(yy)
medium.stanerr[[i]] = std.error(yy)
zz = sample(large.dens, i, replace=TRUE)
large.density[[i]] = mean(zz)
large.stanerr[[i]] = std.error(zz)
}
然后我想运行这个循环100次,如果有意义的话,最终取平均值。例如,我希望它选择2,3,4…17个值100次,每次取平均值和标准误差,然后取所有100次的平均值。这有意义吗?我是否会制作另一个for循环,将其转换为嵌套循环?
我该怎么做呢?
谢谢 还有其他方法可以实现您想要的,但是如果您不想更改代码,那么只需将其包装成这样
res头(res,20)
n size small.density small.stanerr medium.density medium.stanerr large.density large.stanerr
1 1 2 -0.04716195 0.35754422 13.1014925 4.374055 -42.089591 30.87786
2 1 3 -0.15893367 0.34557922 -0.2680632 6.206081 52.984076 36.85058
3 1 4 0.10013995 0.62374467 -0.1944930 5.784211 -112.684774 30.50707
4 1 5 0.40654132 0.40815013 1.6096970 5.026714 45.810098 46.58469
5 1 6 0.13310242 0.32104512 -6.9989844 4.232091 -22.312165 48.14705
6 1 7 0.21283027 0.53633472 -5.0702365 3.829677 -43.266482 41.74286
7 1 8 0.13870439 0.27161346 4.1629469 3.214053 -9.045643 48.49930
8 1 9 0.06495734 0.36738163 3.9742069 3.540913 -43.954345 38.23816
9 1 10 -0.01882762 0.37570468 -3.1764203 3.740403 -43.156792 38.47531
10 1 11 -0.02115580 0.26239465 -2.2026077 2.702412 7.343837 30.58314
11 1 12 0.09967753 0.27360125 3.9603382 3.214921 -13.461632 29.39910
12 1 13 0.53121414 0.27561862 4.3593802 1.872685 -38.572491 25.37029
13 1 14 0.21547909 0.36345292 -0.3377787 2.732968 17.305232 26.08317
14 1 15 0.33957964 0.23029520 0.4832063 2.886160 8.145410 18.23901
15 1 16 0.26871985 0.26846012 -6.7634873 3.436742 -4.011269 20.33814
16 1 17 0.24927792 0.20534048 -0.7481315 1.899348 9.993280 24.49623
17 2 2 -1.10840346 0.07123407 -3.4317644 6.966096 -30.384945 121.00972
18 2 3 1.73947551 0.35986535 -2.1415966 5.628115 -57.857871 10.47413
19 2 4 0.40033834 0.41963615 -4.2156733 1.206414 27.891021 13.84453
20 2 5 -0.08704736 0.52872770 0.3137693 2.974888 -3.100414 57.89126
如果要计算每个大小的100个模拟值的平均值,则只需
aggregate(. ~ size, res[-1L], mean)
这给了你
size small.density small.stanerr medium.density medium.stanerr large.density large.stanerr
1 2 0.02872578 0.6341294 1.0938287 5.518797 3.141204 53.20675
2 3 0.16985732 0.5388110 -0.1627867 5.185643 -6.660756 49.83607
3 4 0.20543404 0.4815581 0.1385016 4.519419 -8.093673 46.64984
4 5 0.13019280 0.4546794 0.1299331 4.166335 -10.300542 41.40444
5 6 0.10675158 0.4307113 0.2191516 4.033863 -12.068151 38.95312
6 7 0.19326831 0.3834507 0.8784275 3.513812 -6.920378 36.17856
7 8 0.09020638 0.3580780 0.4388388 3.443349 -5.335405 30.49615
8 9 0.13956838 0.3558005 0.3740251 3.313501 -15.290834 31.64833
9 10 0.18368962 0.3397191 0.4600761 3.051425 -5.505220 29.46165
10 11 0.20653866 0.3116104 0.9913534 2.804659 -8.809398 28.79097
11 12 0.14653661 0.2988422 0.3337274 2.624418 -5.128882 26.78074
12 13 0.12255652 0.2864998 0.2085829 2.719396 -11.548064 27.08497
13 14 0.13102809 0.2830709 0.6448798 2.586491 -4.676053 25.21800
14 15 0.14536840 0.2749606 0.3415879 2.522826 -11.968496 24.44427
15 16 0.14871831 0.2571571 0.2218365 2.463486 -10.335511 23.64304
16 17 0.13664397 0.2461108 0.3387764 2.348594 -9.969407 22.84736
这些只是空白向量,新的计算平均值和标准误差存放在其中。采样的向量标题为small.dens、med.dens和large.densI请参见。那么什么是标准错误?你是说sd
@杰克3759这只是一个计算标准误差的函数。它在plotrix软件包中。抱歉没有澄清!我才意识到我没有记下包装的名字