2015-04-26 44 views
-4

這是我的代碼:錯誤的「如果」 R中陳述編碼

#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和最後生成所有值,它提供了我想要的實際值。

例如,它必須滿足長度(listnormwor)= 10 * countnormwor

但它給我的數據的荒謬量,當我用if語句玩耍,它說:「缺少值,其中TRUE/FALSE需要「。

回答

0

我建議逐行檢查代碼(每行發送給解釋器)一次一行。通過在解釋器中調用變量來檢查變量的值。我敢打賭,這會導致你的問題來源。首先,在函數內部創建值xc,然後從那裏開始工作。而不是運行for循環,請創建您自己的索引變量i。此外,重點是逐線工作,仔細檢查您的期望值與變量在每個點上的值。