Je me débats avec l'écriture d'une fonction R qui appelle une variable à l'aide de get()
Supposons que j'ai ce cadre de données :
mydat = data.frame(y = rnorm(100),
x = rnorm(100),
day = sample(90:260, 100, replace = T),
r1 = sample(seq(2008,2015,1), 100, replace = T),
r2 = sample(letters, 100, replace = T),
r3 = sample(letters, 100, replace = T))
et je voudrais écrire une fonction qui renvoie le résumé d'un modèle gamm, par exemple comme ceci
gamm_summary = function(data, response = "y"){
require(mgcv)
gamm_model = gamm(get(response) ~ s(day),
random = list(r1=~1, r2=~1, r3 =~1), data = data, method = "REML")
summary(gamm_model$gam)
}
gamm_summary(mydat)
Pourquoi cela me donne-t-il l'erreur :
Erreur dans get(response) : objet 'response' non trouvé
pourtant les travaux suivants :
lm_summary = function(data, response = "y") {
lm_model = lm(get(response) ~ x, data = data)
summary(lm_model)
}
lm_summary(mydat)
Q : Pourquoi get ne fonctionne pas dans ma fonction gamm et comment puis-je réécrire la fonction pour qu'elle fonctionne ?