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:
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:
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:
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:
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 !