Verwendung von sd als generische Funktion in R

8

Wenn ich eine Klasse namens foo habe, ist es einfach, die Funktion summary zu überladen

%Vor%

Allerdings funktioniert diese Technik nicht mit der Funktion sd , das heißt

%Vor%

Was ist der richtige Weg, um diese Funktion zu überlasten?

    
csgillespie 18.01.2011, 19:48
quelle

3 Antworten

7

Sie können jede nicht generische Funktion übernehmen, sie generisch machen (S3) und die Originalversion als Standardversion festlegen. Zum Beispiel:

%Vor%

Ein letzter Schritt, wenn dies in einem Paket ist, ist das Hinzufügen eines ... -Arguments zu sd.default , um die Übergabe von Paketprüfungen zu ermöglichen:

%Vor%

geben:

%Vor%

Dies ergibt dann das gewünschte Verhalten:

%Vor%

Dies ist in Abschnitt 7.1 des Schreibens dokumentiert R Extensions Handbuch

    
Gavin Simpson 18.01.2011, 23:26
quelle
3

Sie müssen einen neuen generischen Code für sd definieren.

Am einfachsten ist es, S4 zu verwenden, da es automatisch die Standardmethode "sd" verarbeitet:

%Vor%     
VitoshKa 18.01.2011 22:00
quelle
1

Sehen Sie sich den Code von sd() an - er wird effektiv intern versendet. Mit anderen Worten, es ist keine generische Funktion, sondern eine einfache alte reguläre Funktion.

Am einfachsten ist es vielleicht, sd() zu ändern, um auf Klasse foo zu verzweigen.

    
Dirk Eddelbuettel 18.01.2011 19:55
quelle

Tags und Links