IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Erreur "argument is of length zero"


Sujet :

R

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 31
    Points
    31
    Par défaut Erreur "argument is of length zero"
    Bonjour, j'ai encore un problème et oui . J'ai la suite de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    > AT3bc <- for(i in AT3) { 
    +     X <- T3$HIGH[i:(i+4)]
    +     Y <- T3$LOW[i:(i+4)]
    +     Z <- cbind(X, Y)
    +     c = max(Z)
    +     d = min(Z)
    +     X <- T3$HIGH[(i+5):(i+15)]
    +     Y <- T3$LOW[(i+5):(i+15)]
    +     Z <- cbind(X, Y)
    +     e <- Z[Z > c | Z < d]
    +     w <- which(X == e[1])
    +     w1 <- which(Y == e[1])
    +     mi <- min(w, w1)
    +     X <- T3$HIGH[(mi+(i+4)):(mi+(i+34))]
    +     Y <- T3$LOW[(mi+(i+4)):(mi+(i+34))]
    +     Z <- cbind(X, Y)
    +     f <- Z[Z > (c + abs(c-d)) | Z < (d - abs(c-d))]
    +     x <- which(X == f[1]) 
    +     x1 <- which(Y == f[1])
    +     mj <- min(x, x1)
    +     if(x==integer(0) & x1==integer(0)) stop()
    +     X1 <- T5$HIGH[((mj+mi)+(i+4)):(mi+(i+34))]
    +     Y1 <- T5$LOW[((mj+mi)+(i+4)):(mi+(i+34))]
    +     w2 <- which(X1 >= f[1])
    +     w3 <- which(X1 <= f[1])
    +     w4 <- which(Y1 >= f[1])
    +     w5 <- which(Y1 <= f[1])
    +     print(w2)
    +     print(w3)
    +     print(w4)
    +     print(w5)
    + }
    Error in if (x == integer(0) & x1 == integer(0)) stop() : 
      argument is of length zero
    Je ne comprends pas pourquoi la console me retourne cette erreur. Cordialement.

  2. #2
    Membre averti
    Homme Profil pro
    Data Scientist
    Inscrit en
    Août 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Scientist
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 139
    Points : 316
    Points
    316
    Par défaut
    Essaye déjà d’exécuter une fois ta boucle en mettant i = 1 avant par exemple et voir si tu as l'erreur et où. (exécute ligne à ligne)

  3. #3
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Bon conseil de la part de chautho, toujours utile lors d'erreurs au sein d'une boucle

    Sinon pour rappel, l'opérateur booléen pour le "ET" en R est : &&.

    Bonne continuation !


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    En fait, il n'y a aucun pb jusqu'à la ligne 21
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(x==integer(0) & x1==integer(0)) stop()
    . J'ai ajouté cette ligne pour justement corriger les valeur de i qui retourne "integer(0)". Dans la matrice données AT3 sur laquelle la boucle se base, il y a un seul élément i qui retourne "integer(0)".
    AD: Oui en effet, il y a 2&, merci. Quand j'ai ajouté un 2e &, le message d'erreur s'est changé, comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    > AT3bc <- for(i in AT3) { 
    +     X <- T3$HIGH[i:(i+4)]
    +     Y <- T3$LOW[i:(i+4)]
    +     Z <- cbind(X, Y)
    +     c = max(Z)
    +     d = min(Z)
    +     X <- T3$HIGH[(i+5):(i+15)]
    +     Y <- T3$LOW[(i+5):(i+15)]
    +     Z <- cbind(X, Y)
    +     e <- Z[Z > c | Z < d]
    +     w <- which(X == e[1])
    +     w1 <- which(Y == e[1])
    +     mi <- min(w, w1)
    +     X <- T3$HIGH[(mi+(i+4)):(mi+(i+34))]
    +     Y <- T3$LOW[(mi+(i+4)):(mi+(i+34))]
    +     Z <- cbind(X, Y)
    +     f <- Z[Z > (c + abs(c-d)) | Z < (d - abs(c-d))]
    +     x <- which(X == f[1]) 
    +     x1 <- which(Y == f[1])
    +     mj <- min(x, x1)
    +     if(x==integer(0) && x1==integer(0)) print(NT) else 
    +         X1 <- T5$HIGH[((mj+mi)+(i+4)):(mi+(i+34))]
    +     Y1 <- T5$LOW[((mj+mi)+(i+4)):(mi+(i+34))]
    +     w2 <- which(X1 >= f[1])
    +     w3 <- which(X1 <= f[1])
    +     w4 <- which(Y1 >= f[1])
    +     w5 <- which(Y1 <= f[1])
    +     print(w2)
    +     print(w3)
    +     print(w4)
    +     print(w5)
    + }
    Error in if (x == integer(0) && x1 == integer(0)) print(NT) else X1 <- T5$HIGH[((mj +  : 
      missing value where TRUE/FALSE needed

  5. #5
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Re-bonjour,

    Pour essayer de comprendre d'où vient l'erreur, il faut tester les éléments un par un.
    Ici, le message d'erreur vous indique qu'en sortie du "IF" il attend une valeur "vraie" (TRUE) ou "fausse" (FALSE) et que ce n'est pas le cas. C'est donc votre condition "if" qui n'est pas correcte à mon avis...
    Avez-vous essayé de voir ce qu'elle renvoie en tapant dans R uniquement : (x==integer(0) && x1==integer(0)) ?

    De plus, pour info, une autre manière de tester si un élément est vide peut être de tester si sa taille/longueur est nulle.

    Bonne continuation !


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Salut,

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     (x==integer(0) && x1==integer(0))
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     (length(x)==0 && length(x1)==0)

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/12/2012, 20h34
  2. Erreur "Runaway argument"
    Par Doom dans le forum Erreurs - Avertissements
    Réponses: 2
    Dernier message: 02/06/2006, 15h29
  3. [débutant] erreur "indice de liste hors limites(1)"
    Par lidouka dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2005, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo