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 avec la fonction paste


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut Problème avec la fonction paste
    Bonjour,

    Je demande votre aide car j'ai un soucis avec la fonction paste lorsque cette dernière utilise un objet créé dans une fonction. C'est un peu difficile à expliquer comme ça donc je vais montrer mon problème par l'exemple :

    Ce petit programme :

    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
    X1 = runif(30,1,2)
    X2 = runif(30,10,12)
     
    test <- function (X1,X2){
      Y = 5+ X1 + 2*X2 + runif(30,0,0.1)
     
      print('Y')
      print(Y)
     
      formule = paste('Y ~ X1', sep = '')
      for(i in 2 : 2) {
    	formule = paste(formule, ' + ' , 'X',i , sep = '')
      }
     
      print('formule')
      print(formule)
     
      regression = lm(formule)
      print(summary(regression))
    }
     
    test(X1,X2)
    Lorsque je le lance, R me dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [1] "Y"
     [1] 27.43397 28.19742 28.49871 28.05793 29.26706 27.85954 27.90859 29.25451
     [9] 28.94962 29.48921 27.74147 28.67211 29.60310 26.30874 30.12588 26.76168
    [17] 27.23888 27.63733 27.76875 28.94732 28.84537 26.96598 29.09912 28.38166
    [25] 27.79499 30.38515 27.66418 27.08074 29.66060 29.94760
    [1] "formule"
    [1] "Y ~ X1 + X2"
    Erreur dans eval(expr, envir, enclos) : objet 'Y' introuvable
    Il dit que l'objet Y est introuvable alors que quelques lignes au dessus il arrive à me l'afficher !

    Et le mieux, c'est que si je n'utilise pas de fonction, ça fonctionne !

    Comme le montre le programme R suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    X1=runif(30,1,2)
    X2=runif(30,10,12)
    Y=5+X1+2*X2+runif(30,0,0.1)
     
      formule = paste('Y ~ X1', sep = '')
      for(i in 2 : 2) {formule = paste(formule, ' + ' , 'X',i , sep = '')}
     
      print('formule')
      print(formule)
     
      regression = lm(formule)
      print(summary(regression))
    Qui lui, ne pose aucun problème :

    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
    [1] "formule"
    [1] "Y ~ X1 + X2"
     
    Call:
    lm(formula = formule)
     
    Residuals:
          Min        1Q    Median        3Q       Max 
    -0.050324 -0.015752  0.004753  0.013237  0.044199 
     
    Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
    (Intercept) 5.203691   0.096303   54.03   <2e-16 ***
    X1          0.993411   0.017030   58.33   <2e-16 ***
    X2          1.987144   0.008172  243.16   <2e-16 ***
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
     
    Residual standard error: 0.0264 on 27 degrees of freedom
    Multiple R-squared: 0.9996,     Adjusted R-squared: 0.9995 
    F-statistic: 3.034e+04 on 2 and 27 DF,  p-value: < 2.2e-16
    Comment faire pour que mon premier programme fonctionne correctement ?

    Merci d'avance !

  2. #2
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Bonjour,

    Le problème ne vient pas de la fonction paste.
    Je ne sais pour quelle obscure raison, mais dans le premier cas la conversion (implicite) de la chaîne de caractère vers une donnée de classe formula semble mal se faire tandis que dans le second cas ça fonctionne bien.

    Il semble préférable de faire soi-même la conversion :
    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
    X1 = runif(30, 1, 2)
    X2 = runif(30, 10, 12)
    X3 = runif(30, 2, 5)
    
    test <- function (X1, X2, X3)
    {
        Y <- 5 + X1 + 2 * X2 - 0.5 * X3 + rnorm(30, 0, 0.5)
        
        print('Y')
        print(Y)
        
        formule <- 'Y ~ X1'  ## paste inutile
        for(i in 2 : 3)
        {
            formule <- paste(formule, ' + ' , 'X', i, sep = '')
        }
        
        ## Conversion en objet de type formula :
        formule <- as.formula(formule)
        
        print('formule')
        print(formule)
        
        regression <- lm(formule)
        print(summary(regression))
    }
    
    test(X1,X2,X3)
    (Bon j'ai un peu modifié le reste du code mais ça ne change rien au principe)

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Par défaut
    Ca fonctionne !

    Merci beaucoup d'avoir répondu aussi vite ! Cela fait plusieurs jours que je me penchais sur le problème et je dois avouer que tu m'as bien débloqué !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Probléme avec la fonction paste!
    Par kent010 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/12/2014, 09h01
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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