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 :

Problème de Syntaxe en R ?


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Problème de Syntaxe en R ?
    Bonjour,

    Je n'ai aucune visibilité sur mon erreur de syntaxe ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    df <-donneeslog[(1:18),]
    df2 <- df
    df2
     
    library(dplyr)
    > #Affiche le critère 2
    > df2a <- df %>% 
    +   filter(NPVe1 !=1 & HPRF >=1 & HSRF >200 & MATER2 >=1 & CHEM1 >=1) %>% 
    +   select(NPVe1, HPRF, HSRF, MATER2, CHEM1)
    Error in select(., NPVe1, HPRF, HSRF, MATER2, CHEM1) : 
      arguments inutilisés (NPVe1, HPRF, HSRF, MATER2, CHEM1)
    et à chaque numéro de ligne où il y a un signe x, il y a cette info : expected " ' " after expression (c'est à dire à la fin d'une ligne de commande je dois mettre virgule " , ", et j n'ai as compris.

    Merci pour votre réponse.

  2. #2
    Membre du Club
    Homme Profil pro
    Formateur et consultant R
    Inscrit en
    Juin 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur et consultant R
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2020
    Messages : 36
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    Pouvez-vous montrer à quoi ressemble le jeu de données "donneeslog".
    Vous pouvez utiliser la fonction
    et mettre le contenu ici. Cela nous donnera la possibilité de voir les 6 premières lignes et de réutiliser directement le code pour reconstruire la table.
    Vous pouvez évidemment changer les valeurs, si vous souhaitez les garder privées.

    Cela dit, Il peut aussi y avoir un conflit de nom de fonction.
    Si vous utilisez
    Est-ce que ça fonctionne mieux ?

    La dernière chose à laquelle je pense c'est que vous avez tellement filtré, qu'il ne reste plus aucune données.
    Si le jeu de données était un data.frame, alors vous n'avez plus de colonnes.
    Essayez peut-être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    df2a <- df %>%
     as_tibble() %>%
     filter(NPVe1 !=1 & HPRF >=1 & HSRF >200 & MATER2 >=1 & CHEM1 >=1) %>%
     select(NPVe1, HPRF, HSRF, MATER2, CHEM1)
    Cordialement,
    Sébastien

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    Je me suis penché 2 jours sur ce blocage de select non utilisé et j'ai mis 1 cliché en PJ, en rechargeant le fichier et j'ai testé vos codes. Comment réinitialiser "values" dans R ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    str(df)
    attach(df)
    # Cibler un groupe de données
    df <- varhabitudes[(1:18),]
    df3 <- df
    df3
    # Critère de recherche au choix sur le filtre
    #CTRL+ENTREE pour Charger la librairie
    library(dplyr)
    #Affiche les critères correspondants aux &
    df3a <- df3 %>%
      filter(VoitureDansGarage.DGG3n ==3.5 & Fumeurs.FUMEURn !=0 & SechageLingeDansLogement.LVSBn !=0 & TapisDescenteLitNeuf.QTA1n !=0 & Chiens.ANI21n !=0) %>% 
      select(VoitureDansGarage.DGG3n, Fumeurs.FUMEURn, SechageLingeDansLogement.LVSBn, TapisDescenteLitNeuf.QTA1n, Chiens.ANI21n)
    df3a
    Résultat d 'erreur de la commande ci-dessus :

    Error in select(., VoitureDansGarage.DGG3n, Fumeurs.FUMEURn, SechageLingeDansLogement.LVSBn, :
    arguments inutilisés (VoitureDansGarage.DGG3n, Fumeurs.FUMEURn, SechageLingeDansLogement.LVSBn, TapisDescenteLitNeuf.QTA1n, Chiens.ANI21n)
    > df3a
    Erreur : objet 'df3a' introuvable
    Cordialement
    Images attachées Images attachées  

  4. #4
    Membre du Club
    Homme Profil pro
    Formateur et consultant R
    Inscrit en
    Juin 2020
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur et consultant R
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2020
    Messages : 36
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    J'aurai besoin du script complet et du jeu de données pour pouvoir vous aider.
    J'ai besoin de reproduire l'erreur sur mon poste pour trouver d'où vient le problème.

    Pour le moment, je ne vois pas d'autre problème qu'un conflit de namespace avec le chargement d'un autre package qui utiliserait la fonction "select()".
    Si vous faîtes
    ?select
    Vous avez une ou plusieurs propositions ?

    Sinon, merci de partager le script complet et les données.

  5. #5
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    Et si le résultat de filter retournait un data.frame vide ? Alors commencer par vérifier s'il reste des lignes après le filtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str( with( df, NPVe1 != 1 & HPRF >= 1 & HSRF > 200 & MATER2 >= 1 & CHEM1 >= 1))
    De plus, pourquoi ne pas utiliser une écriture plus simple, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df2a <- subset( df, NPVe1 != 1 & HPRF >= 1 & HSRF > 200 & MATER2 >= 1 & CHEM1 >= 1, c( NPVe1, HPRF, HSRF, MATER2, CHEM1))
    De plus df est par défaut une fonction liée à la distribution F (voir help( "fd")). Surcharger cette variable peut conduire à des catastrophes par la suite.

    @LANGAGER : à quoi sert attach dans ton code, fonction à utiliser avec beaucoup de prudence car elle 'fixe' l'objet dans l'espace de travail en en faisant un objet par défaut ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonjour Sébatien, Faubry, statnmap,

    J'avoue que j'avais eu le tournis, avec ce problème de syntaxe qui par moment me met dans le doute dans mon raisonnement, même si je débute en R, j'essaie d'avoir une petite logique de transcription de mes pensées, même si parfois c'est tordu.

    Hier j'ai trouvé par hasard la solution, si c'est une solution ? ?? J'ai réinstallé le package dplyr, car il y avait 1 conflit avec les autres dépendances ou sous packages en relation avec DPLYR, car il y avait 5 croix rouges indiquant les conflits. Et là je n'avais pas compris non plus, puisque j'avais fait 1 update des packages.

    Comment pourrais-je remplacer l'utilisation de "attach" pour le Data Frame ?
    Je pensais qu'en faisant attach d'un data frame, cela devient une correspondance avec un fichier csv ou une table, afin d'éviter d'utiliser un autre fichier.

    Comment éviter d'utiliser toutes les données en terme de jeu d'essai ?

    OK je vais faire tous les tests de vos réponses et voir comment réagissent les commandes en R.
    Je pense que je manque de "Méthode" et la "Bonne pratique" d'utilisation de R.

    Puisque je suis en train de faire 1 projet en solo à rendre, alors certains passages ne sont pas aisés à faire, mais je teste et je teste pour avancer, car je dois pouvoir faire une "Prédiction" à partir de mes 5 fichiers .csv, en 1 seul résultat.

    Merci pour vos observations qui vont m'aider à me corriger et essayer de progresser.

    Cordialement.

  7. #7
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    attach ajoute l'objet à la liste de recherche de R qu'on peut visualiser par search(). Par défaut l'objet est mis en tête de liste mais l'argument pos permet de modifier cette position. Sauf cas particulier, pour utilisateurs avertis, ne jamais utiliser attach.

    Un fichier csv sera lu dans un data.frame identifié par un nom, par exemple, don, par la fonction read.csv. don fera référence à ces données à moins qu'on le surcharge par une autre commande.

    J'en reviens à ma question : es-tu sûr que ta sélection n'est pas vide ?

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par faubry Voir le message
    attach ajoute l'objet à la liste de recherche de R qu'on peut visualiser par search(). Par défaut l'objet est mis en tête de liste mais l'argument pos permet de modifier cette position. Sauf cas particulier, pour utilisateurs avertis, ne jamais utiliser attach.

    Un fichier csv sera lu dans un data.frame identifié par un nom, par exemple, don, par la fonction read.csv. don fera référence à ces données à moins qu'on le surcharge par une autre commande.

    J'en reviens à ma question : es-tu sûr que ta sélection n'est pas vide ?
    Bonsoir Faubry,

    Effectivement j'ai dû zapper ta question à la quelle je n'avais pas répondu, car dans mes multiples tests qui m'a fait le tournis, à un moment j'étais contraint de faire rm(de mon fichier qui ne donnait rien, donc fichier vide) et de faire 1 import pour le recharger. Mais quel est le mécanisme qui fait le décompte d'utilisation des jeux de données ? Car j'ai plus de 300 lignes pour faire les tests ? Oui je pense que j'avais bien eu 1 vide de jeu de données. Ensuite j'ai ce conflit de dply que j'ai réinstallé.

    Cordialement.

  9. #9
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    Que veux-tu dire par "à un moment j'étais contraint de faire rm(de mon fichier qui ne donnait rien, donc fichier vide) et de faire 1 import pour le recharger" ?
    Je penses que tu pars d'un fichier extérieur sur disque (en format csv) que tu lis dans l'espace de travail de R. Dans R, ce sera un data.frame. Donc, première question, cette lecture se passe-t-elle bien ?

    Une fois lu, tu vas travailler ces données. Si je comprends ton problème, tu veux extraire un sous-ensemble d'individus (donc de lignes), qui correspondent à un critère donné et tu ne t'intéresses qu'à certaines variables (colonnes) de ce sous-ensemble. Est-cela ce que tu veux faire ?

    Pour faire simple, l'identifiant à gauche de l'opérateur <- est un raccourci pour référencer les données résultant des opérations indiquées à droite de ce signe donc si tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    don <- operations.1
    don <- operations.2
    don ne référenceras pas les mêmes données à chaque fois et après la seconde opération, tu as perdu les données de la première. Il n'y a pas de compteur d'utilisation dans R contrairement à d'autres langages comme Java et dans Java, il ne s'agit pas de compteur d'utilisation et de compteur de référence associé à chaque objet. Tant qu'un objet est référencé quelque part, il reste en mémoire sinon il est supprimé. Mais pour reprendre mon code, en Java, l'objet résultant d'opérations.1 aura son compteur mis à 1 mais à défaut d'autres références, la procédure opérations.2 le fera passer à zéro et disparaître.

    Ton problème me semble être un problème de spécification et de programmation et utiliser des packages supplémentaires comme dplyr ne résoudra rien, si ce n'est peut-être que compliquer encore un peu le problème d'autant, et je vais être un peu provocant, que d'après mon expérience dplyr ne sert à rien dans 99% des cas, sauf si on veut concevoir R comme un gestionnaire de base de données, mais dans ce cas, il existe des solutions plus efficaces.

Discussions similaires

  1. Problème de syntaxe - elements['x'].value
    Par Equus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/02/2005, 11h22
  2. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07
  3. Problème de syntaxe
    Par Mister_FX dans le forum ASP
    Réponses: 5
    Dernier message: 30/06/2004, 10h01
  4. Problème de syntaxe ADO ...
    Par bendev dans le forum ASP
    Réponses: 2
    Dernier message: 15/04/2004, 14h38
  5. Réponses: 2
    Dernier message: 08/03/2004, 15h10

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