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 !