2010-04-18 11 views
0

Quelqu'un pourrait-il s'il vous plaît me dire quel est le problème avec le code R ci-dessous:dans R, les arguments de « boucle »

i = 1.001 
#make SAV and STO become vector 
SAV = c() 
STO = c() 
#set the initial values for the vector 
SAV[1] = 0 
STO[1] = 100 


for (t in 2:1000) { 
if ((price[t]>9.9)&(price[t]<10.1)&(SAV[t-1]!=0)) 
     SAV[t]=SAV[t-1]*i 
     STO[t]=0 
} 

for (t in 2:1000) { 
if ((price[t]>9.9)&(price[t]<10.1)&(SAV[t-1]=0)) 
     STO[t] = STO [t-1] 
     SAV[t] = 0 
} 

SAV 
STO 

Ce que je suis en train de faire est de trouver vecteur pour les SAV et STO.

+0

Il vous manque des parenthèses bouclées autour de vos blocs if. – Shane

Répondre

3

Je voudrais essayer quelque chose comme ce qui suit. Modifiez-le pour être cohérent avec la logique de votre programme

for (t in 2:1000) { 
     if ((price[t]>9)&(price[t]<10)) { 
      # values for STO,SAV when price in the interval and SAV[t-1]!=0 
      if (SAV[t-1]!=0) { 
       SAV[t]=SAV[t-1]*i 
       STO[t]=0 
      } 
      # values for STO,SAV when price in the interval and SAV[t-1]==0 
      else { 
       STO[t] = STO[t-1] 
       SAV[t] = 0 
      } 
     } 
     # values for STO,SAV when price not in the interval 
     else { 
      STO[t] = STO[t-1] 
      SAV[t] = 1 
     } 
} 
+0

thx pour votre aide, je pense que le problème principal est que je ne devrais pas les mettre en deux pour la boucle .... merci beaucoup – alex

-1

Je ne suis pas vraiment bon R, mais peut-être que les tableaux commencent à 0? (À la place à 1)

SAV[1] = 0 
STO[1] = 100 

==>

SAV[0] = 0 
STO[0] = 100 

Ma deuxième hypothèse est au sujet de la, si les conditions dans le for-boucles. Je mettrais des crochets sur toute l'expression, quelque chose comme ça.

for (t in 2:1000) { 
    if ((price[t]>9.9)&(price[t]<10.1)&(SAV[t-1]=0)) { 
     STO[t] = STO [t-1] 
     SAV[t] = 0 
    } 
} 

Je ne pense pas qu'il pourrait aider, mais il vaut la peine d'essayer;)


Edit:

Essayez d'utiliser SAV[t-1]==0 au lieu de SAV[t-1]=0 dans votre ... si la condition


Édition 2:

également essayer d'utiliser le & & opérateur au lieu du & un ...

+0

Les tableaux dans R commencent à 1. – Shane

0

Je pense que vous écrasez les vecteurs STO et chaque itération SAV. Difficile à dire cependant car le vecteur des prix n'a pas été déclaré. Essayez initialisation STO et SAV comme vecteurs de la longueur désirée, plutôt que des vecteurs de longueur 0:

SAV = matrice (0,1,1000)

STO = matrice (0,1,1000)

+0

en fait, le prix est vecteur, le principal problème est inférieur à pour (t en 2: 1000) { si ((prix [t]> 9,9) & (prix [t] <10,1) & (SAV [t-1]! = 0)) SAV [t] = SAV [t-1] * i STO [t] = 0 } est toujours dit que j'ai fait une erreur dans le {} ... – alex

Questions connexes