这是我的代码:

#Start of my Code#
test1<-function(c,x){
high=0
low=0
samp=NULL

samp=sample(c,x)
for(i in 1:x){
if(samp[i]>1){high=high+1}
else if (samp[i]<0){low=low+1}}
c(high,low,mean(samp),var(samp),samp)
}

sim1 <-function(c,x){
replicate(nsim,{test1(c,x)})}

size=10
a<-sim1(overall,size)

listnormwor=NULL
countnormwor=0
meannormwor=NULL

for(i in 0:nsim-1){
**if (a[1+(size+4)*i]+a[2+(size+4)*i]==0)**{
countnormwor=countnormwor +1
for (z in 5:(size+4)){
listnormwor=c(listnormwor, a[z+(size+4)*i])}
meannormwor=c(meannormwor,a[3+(size+4)*i])}
}

countnormwor
mean(meannormwor)
var(listnormwor)

简而言之,我想说的是,如果没有异常值(在每14个数据点的第一个和第二个值中表示为“0”),将其计数到一个正常的存储桶中,并保留其值以计算方差,然后求平均值。

但是问题在于,它从a生成所有值,最后,它提供了我想要的实际值。

例如,它必须满足length(listnormwor)= 10 * countnormwor

但这给了我很多数据,当我处理if语句时,它说“缺少需要TRUE/FALSE的值”。

最佳答案

我建议每次单步执行代码(将每一行发送到解释器)。通过在解释器中调用变量来检查变量的值。我敢打赌,这将引导您找到问题的根源。首先,在函数内部创建值xc,然后从那里开始工作。无需运行for循环,而是创建自己的索引变量i。同样,重点是逐行工作,并根据变量在每个点取的值仔细检查您的期望。

10-04 11:45