2016-04-18 1 views
0

De nombreux packages contiennent des données dans lesquelles plot (df) produit une sortie spécifique. par exemple. nlme contient le « Dialyzer » trame de données qui sur la parcelle (dialyseur) produit un terrain en utilisant treillis (paquet de treillis) où le code serait en fait:Définition des attributs de tracé par défaut pour une trame

dotplot(rate ~ pressure | Subject, data="Dialyzer") 

Le code pour ce qui semble être contenue dans les attributs de dataframes : quelqu'un peut-il me diriger vers un guide ou inclure un guide sur la façon de définir l'intrigue par défaut pour une base de données?

Répondre

1

Ceci est déterminé par la classe de l'objet. Notez la classe de Dialyzer "data.frame".

> class(Dialyzer) 
[1] "nfnGroupedData" "nfGroupedData" "groupedData" "data.frame" 

Lorsque vous appelez intrigue, il passe par les entrées de cette classe et essaie de trouver la méthode plot.*. Le premier qu'il trouve est utilisé. Si tout échoue, il y a toujours data.frame.

> methods("plot") 
[1] plot.acf*    plot.ACF*    plot.augPred*   plot.compareFits*  plot.data.frame*  
[6] plot.decomposed.ts* plot.default   plot.dendrogram*  plot.density*   plot.ecdf    
[11] plot.factor*   plot.formula*   plot.function   plot.gls*    plot.hclust*   
[16] plot.histogram*  plot.HoltWinters*  plot.intervals.lmList* plot.isoreg*   plot.lm*    
[21] plot.lme    plot.lmList*   plot.medpolish*  plot.mlm*    plot.nffGroupedData* 
[26] plot.nfnGroupedData* plot.nls*    plot.nmGroupedData* plot.pdMat*   plot.ppr*    
[31] plot.prcomp*   plot.princomp*   plot.profile.nls*  plot.ranef.lme*  plot.ranef.lmList*  
[36] plot.raster*   plot.shingle*   plot.simulate.lme*  plot.spec*    plot.stepfun   
[41] plot.stl*    plot.table*   plot.trellis*   plot.ts    plot.tskernel*   
[46] plot.TukeyHSD*   plot.Variogram*  

Si vous souhaitez utiliser une méthode spécifique, vous pouvez l'appeler explicitement à l'aide plot.*, par exemple plot.default.

+0

Merci Roman, après avoir cherché autour de votre réponse, j'ai trouvé ceci: https: //github.com/cran/nlme/blob/master/R/groupedData.R où il spécifie comment les données-cadres sont groupés en nlme. – Irenabyss

1

R est polymorphe. Cela signifie que la même fonction peut mener à différentes opérations pour différentes classes d'objets. Vous pouvez appliquer plot() à de nombreux types différents d'objets, vous obtiendrez un type différent d'intrigue pour chacun d'eux. Nous pourrions dire la même chose, par exemple, pour print(), summary() et beaucoup d'autres. Le polymorphisme rend les choses plus faciles à retenir. Si une fonction est nouvelle pour vous, essayez simplement d'exécuter plot() sur la sortie de la fonction; ça marchera probablement. Si vous êtes programmeur, le polymorphisme permet d'écrire du code assez général, sans se soucier du type d'objet manipulé, car les mécanismes de classe sous-jacents s'en occupent. Les fonctions qui fonctionnent avec le polymorphisme, telles que plot() et print(), sont appelées générique. Lorsqu'une fonction générique est appelée, R transmet l'appel à la méthode de classe relative: elle redirige l'appel vers une fonction définie pour la classe de l'objet spécifique.