je dois modifier le lm
(ou éventuellement loess
) fonction pour que je puisse l'utiliser dans geom_smooth
de ggplot2 (ou stat_smooth
).modifier la fonction lm ou loess à utiliser dans le geom_smooth de ggplot2
Par exemple, voici comment stat_smooth
est utilisé normalement:
> qplot(data=diamonds, carat, price, facets=~clarity) + stat_smooth(method='lm')`
Je voudrais définir une fonction personnalisée lm2
à utiliser comme valeur du paramètre method
dans stat_smooth
, donc je peux personnaliser son comportement.
> lm2 <- function(formula, data, ...)
{
print(head(data))
return(lm(formula, data, ...))
}
> qplot(data=diamonds, carat, price, facets=~clarity) + stat_smooth(method='lm2')
Notez que je l'ai utilisé method='lm2'
comme paramètre dans stat_smooth
. Quand j'exécute ce code a obtenir l'erreur:
Error in eval(expr, envir, enclos) : 'nthcdr' needs a list to CDR down
Ce que je ne comprends pas très bien. La méthode lm2
fonctionne très bien lorsqu'elle est exécutée en dehors de stat_smooth
. J'ai joué avec ça un peu et j'ai différents types d'erreurs, mais comme je ne suis pas à l'aise avec les outils de débogage de R, il m'est difficile de les déboguer. Honnêtement, je ne comprends pas ce que je devrais mettre dans l'appel return()
.
Merci! bonne réponse, mon problème était que je ne savais pas que je devais appeler le match.call et comment l'utiliser. Ce que je voulais vraiment faire, c'est ignorer l'évaluation de lm pour les jeux de données avec trop peu de points (cela peut arriver lorsque vous faites des facettes, voir http://groups.google.com/group/ggplot2/browse_thread/thread/df6da9d72f0a1dbf#) mais je voulais voir un cas général. – dalloliogm
Finalement, j'ai résolu mon problème en le signalant à l'auteur de ggplot2 et en attendant qu'il le répare. – dalloliogm