【发布时间】:2016-07-12 16:42:02
【问题描述】:
ns<-c(1,5,20,50,100,1000,10000)
Final<-rep(0,7)
second<-rep(0,10000)
for(i in length(ns)) {
second<-sample(1:1000,ns[i],replace=TRUE)
second[second==0]<-NA
Final[i]<- sd(second,na.rm=FALSE)
}
ns 是我想要采用的不同采样长度。我创建了空向量 Final 和 second 来存储循环的值。
我遇到了 Final 大部分返回 0 值的问题,所以经过思考后,我决定在每个循环中从 second 中删除所有零值。但这并没有帮助,运行此代码后,我得到:
> Final
[1] 0.000 0.000 0.000 0.000 0.000 0.000 288.569
现在我被困住了。因为当我阅读我的代码时,似乎很清楚:在给定第 i 个循环的情况下,从与ns 的 [i] 对应的单元数的 1:1000 中抽取样本。然后取包含样本的向量的非零值的标准差,并将其存储在另一个向量中,Final。
【问题讨论】:
-
for循环的典型问题,应写为for(i in 1:length(ns))。