2015-04-26 1 views
-4

Ceci est mon code:Erreur dans « Si » déclaration R codage

#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) 

Simplement, je veux dire s'il n'y a pas de valeurs aberrantes (indiquées comme « 0 » dans la première et la deuxième valeur de chaque 14 données points), comptez-le dans un seau normal et gardez ses valeurs pour calculer la variance et dire plus tard.

Mais le problème est que, il génère toutes les valeurs de a et à la toute fin, il fournit les valeurs réelles que je veux.

Par exemple, il doit satisfaire à la longueur (listnormwor) = 10 * countnormwor

Mais il me donne une quantité ridicule de données et quand je joue autour avec l'instruction if, il dit « valeur manquante où VRAI/FAUX nécessaire."

Répondre

0

Je suggérerais de parcourir le code (en envoyant chaque ligne à l'interprète) une ligne à la fois. Inspectez la valeur des variables en les appelant dans l'interpréteur. Je parie que cela vous mènera à la source de votre problème. Pour commencer, créez les valeurs x et c à l'intérieur de la fonction puis travaillez à partir de là. Au lieu d'exécuter la boucle for, créez votre propre variable d'index i. Encore une fois, le but est de travailler ligne par ligne et de vérifier soigneusement vos attentes par rapport aux valeurs prises par les variables à chaque point.