Wie man Match-Funktionen in R

Wenn Funktionen als Argumente in R verwendet wird, ist es manchmal notwendig, Funktionen anzupassen. Dies bedeutet auch, dass, wenn Sie ein Objekt mit dem gleichen Namen wie die Funktion haben, die Sie verwenden möchten, diese ganze Konstrukt wird nicht funktionieren. Angenommen, Sie hatten die nicht-so-intelligente Idee eines Vektors mit der relativen Gewinn von ein paar Runden Poker wie folgt zu erstellen:

> Runde lt; - c (0,48, -0.52,1.88)

Wenn Sie versucht zu rufen addPercent () mit dem SPASS Argument auf diesem Vektor, würden Sie die folgende Fehlermeldung erhalten:

> AddPercent (rund, FUN = round) Fehler bei addPercent (rund, FUN = Runde): keine Funktion "FUN" finden konnten,

Anstatt den Code der Verabschiedung runden Funktion, geht R den Vektor runden als SPASS Streit. Um diese Art von Problemen zu vermeiden, können Sie eine spezielle Funktion zu verwenden, match.fun (), in den Körper addPercent (), so was:

addPercent lt; - Funktion (x, mult = 100, FUN, ...) {FUN lt; - match.fun (FUN) Prozent lt; - FUN (x * mult, ...) Paste (Prozent, "%", sep = "")}

Diese Funktion wird für eine Funktion suchen, die den Namen übereinstimmt runden und kopieren Sie diesen Code in das SPASS Argument anstelle des Vektors runden. Als zusätzlichen Bonus, match.fun () Auch können Sie ein Zeichen-Objekt als Argument zu verwenden, so die Angabe FUN = 'rund' Jetzt funktioniert auch.

Alle nativen R-Funktionen verwenden match.fun () Zu diesem Zweck, und es wird empfohlen, das gleiche für Sie tun, wenn Sie Code schreiben, die von anderen Personen verwendet werden. Aber Funktionen vorbei funktioniert ohne Verwendung match.fun () als auch, solange Sie verwenden vernünftige Namen für die anderen Objekte in Ihrem Arbeitsbereich.

Menü