Angenommen, ich möchte eine Funktion in R
schreiben, die eine Funktion einiger ausreichender Statistiken für einige Daten ist. Angenommen, die Funktion " foo.func
aufrufen" hängt nur vom Stichprobenmittelwert einer Stichprobe von Daten ab. Aus praktischen Gründen denke ich, dass Benutzer gerne foo.func
die Stichprobe von Zufallsvariablen übergeben (in diesem Fall berechnet foo.func
den Stichprobenmittelwert), oder das Stichprobenmittel selbst, was alles% ist co_de% braucht. Aus Gründen der Effizienz wird letzteres bevorzugt, wenn mehrere Funktionen wie foo.func
aufgerufen werden, die den Stichprobenmittelwert annehmen können. In diesem Fall muss der Mittelwert nur einmal berechnet werden (in dem realen Problem, das ich habe, könnte die betreffende Stichprobenstatistik rechenintensiv sein).
Zusammenfassend möchte ich foo.func
schreiben, um dem Anfänger zugänglich zu sein (die Daten zu übergeben, die Funktion die ausreichenden Statistiken berechnen zu lassen) sowie den Experten (die genügenden Statistiken für die Leistungsfähigkeit vorberechnen und sie einreichen ). Was sind die empfohlenen Praktiken dafür? Habe ich eine logische Flagge übergeben? Mehrere Argumente? Einige Möglichkeiten, dies zu tun, könnten sein:
oder
%Vor%Ich lehne mich dem ersteren zu, denke ich
Sie können auch Funktionen in die Argumente einbetten, zB:
%Vor%Als ein Beispiel:
%Vor% Alternativ können Sie entweder die Standardeinstellung NULL
für verschiedene Argumente verwenden und auf is.null(argument)
testen oder einfach den Wert von missing(argument)
für jedes Argument, das Sie berechnen, überprüfen.
Update 1: Ich habe einen Fehler gemacht, indem ich einen Standardwert von NA
vorgeschlagen habe: Es ist viel angemessener, NULL
zu verwenden. Die Verwendung von NA
und is.na()
wird sich für Vektoreingaben merkwürdig verhalten, während NULL
nur ein einzelnes Objekt ist - es kann kein Vektor mit NULL-Werten erstellt werden, daher verhält sich is.null(argument)
wie erwartet. Entschuldigung für das Vergessen.
Der R-Weg zur Implementierung von Polymorphismus ist durch ein CLOS-Modell (Common Lisp's OO), bei dem Methoden mit generischen Funktionen (Verben) und nicht mit Klassen (Nomen) assoziiert werden. Zum Beispiel,
%Vor% In diesem Beispiel wurde Rs S3
OOP-Modell verwendet, was meines Erachtens völlig ausreichend ist. S4
ist moderner und sicherer, aber fügt eine Menge Standard hinzu.
Tags und Links r polymorphism