2016-04-18 9 views
0

Viele Pakete enthalten Datenrahmen, in denen plot (df) eine bestimmte Ausgabe erzeugt. z.B. nlme enthält die ‚Dialysator‘ Daten-Rahmen, der auf einem Grundstück (Dialysator) mit einem Plot erzeugt unter Verwendung von Trellis (Gitter-Paket), in dem der Code tatsächlich wäre:Festlegen der Standard-Plot-Attribute für einen Datenrahmen

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

Der Code dafür scheint in den Datenrahmen Attribute enthalten zu sein : Kann mir jemand auf einen Leitfaden hinweisen oder eine Anleitung zum Festlegen des Standard-Plots für einen Dataform hinzufügen?

Antwort

1

Dies wird durch die Klasse des Objekts bestimmt. Beachten Sie die Klasse von Dialysator "data.frame".

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

Wenn Sie Plot nennen, geht es durch die Einträge dieser Klasse und versucht plot.* Methode zu finden. Der erste, den es findet, wird benutzt. Wenn alles fehlschlägt, gibt es immer 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*  

Wenn Sie eine bestimmte Methode verwenden möchten, können Sie es explizit aufrufen plot.*, z.B. plot.default.

+0

Danke Roman, nach Ihrer Antwort gesucht habe ich gefunden: https: //github.com/cran/nlme/blob/master/R/groupedData.R, wo es angibt, wie die Datenrahmen in nlme gruppiert sind. – Irenabyss

1

R ist polymorph. Es bedeutet, dass dieselbe Funktion zu verschiedenen Operationen für verschiedene Objektklassen führen kann. Sie können plot() auf viele verschiedene Arten von Objekten anwenden, Sie erhalten für jeden eine andere Art von Handlung. Wir könnten dasselbe zum Beispiel für print(), summary() und viele andere sagen.

Polymorphie macht Dinge leichter zu merken. Wenn eine Funktion für Sie neu ist, versuchen Sie einfach plot() für die Ausgabe der Funktion auszuführen; Es wird wahrscheinlich funktionieren. Wenn Sie Programmierer sind, erlaubt Polymorphie das Schreiben ziemlich allgemeinen Codes, ohne sich Gedanken darüber zu machen, welche Art von Objekt manipuliert wird, weil die zugrunde liegenden Klassenmechanismen dafür sorgen. Funktionen, die mit Polymorphismus arbeiten, wie plot() und print(), sind bekannt als generische. Wenn eine generische Funktion aufgerufen wird, überträgt R den Aufruf an die relative Klassenmethode: Sie leitet den Aufruf an eine für die Klasse des spezifischen Objekts definierte Funktion um.