2011-09-05 3 views
4

Je l'extrait de code de code suivant:erreur négative de indices en R

if(k<=100 && k>=0) 
{   
    j[k+seq(-50,150)]<-F; 
} 
else 
{ 
    j[k+seq(-100,100)]<-F; 
} 

Et l'erreur suivante:

Error in j[k + seq(-50, 150)] <- F : only 0's may be mixed with negative subscripts

Pourquoi suis-je recevoir ce même si je mets les conditions si les indices peuvent courir dans les valeurs négatives?

Répondre

10

Lorsque k = 25, par exemple, votre condition if est vraie (k est inférieure à 100 mais supérieure à 0). Mais 25 + (-50) est -25. Mais 25 + 150 = 175, un indice positif. Vous ne pouvez pas mélanger des indices positifs et négatifs lors de la sous-sélection. Je suppose que je devrais ajouter qu'une partie de la raison pour laquelle vous ne pouvez pas faire cela est que les indices positifs et négatifs ont une signification différente. x[3] signifie que vous voulez sélectionnez le troisième élément, tandis que x[-3] signifie que vous voulez omettre le troisième élément. Il serait déroutant de garder trace des indices référés à quels éléments si vous avez commencé à déposer des éléments en même temps que vous en sélectionnez d'autres.

+0

Bonne réponse. Je voudrais savoir: pourquoi le PO a-t-il commencé en essayant de définir les indices de j de cette manière? Si, par exemple, k était -10 pour commencer, les choses seraient encore plus laids. Il doit déterminer quelle gamme de valeurs k il attend et ajuster le décalage d'indice de manière appropriée. –

Questions connexes