Soit le data frame suivant:
Code : Tout sélectionner
df <- expand.grid(x=1:3,y=1:4,g=factor(1:4))
df$letter <- sample(LETTERS,nrow(df),replace=TRUE)
Pour afficher la lettre en position (x,y) pour chaque groupe avec le package lattice, on peut utiliser la syntaxe suivante:
Code : Tout sélectionner
library(lattice)
xyplot(y~x|g,data=df,
panel=function(x,y,groups,subscripts,...) ltext(x,y,df$letter[subscripts[groups]])
)
Mais si on remplace la fonction panel() par
Code : Tout sélectionner
panel=function(x,y,groups,subscripts,...) ltext(x,y,letter[subscripts[groups]])
(sans spécifier "df$" avant "letter") alors on obtient l'erreur: Error using packet 1, object 'letter' not found.
Les variables de df ne sont donc pas passées à la fonction panel() (la documentation de xyplot() n'est pas très claire sur ce point).
Ce fonctionnement peut être gênant dans des cas plus complexes où l'on doit utiliser plusieurs variables du data frame, car en cas de changemnt de data frame il faut modifier le code à plusieurs endroits ce qui fait perdre l'intérêt de l'argument data=.
Ma question est la suivante:
Y a-t-il une syntaxe permettant de signaler à panel() qu'on veut utiliser toutes les colonnes du data frame ?