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