Für Python-Benutzer, die R lernen, wäre eine schnelle Antwort, dass dies ...das R-Äquivalent von Pythons Schlüsselworteingabe ( def func(**kwargs)) ist
Eigentlich ist der offizielle Name in R dots, zB die ?dots
Hilfeseite
In Bezug auf Hilfedateien ?dotsfunktioniert das bei mir nicht, ?'...'tut es aber .
Coip
53
Ein kleines Beispiel für den Einstieg.
f <-function(x,...){
dots <- list(...)#1if(length(dots)==0)return(NULL)
cat("The arguments in ... are\n")
print(dots)
f(...)#2}
f(1,2,3,"a", list("monkey"))
Die Funktion f,, speichert alle bis auf das erste Eingabeargument in der Ellipsenvariablen. Für den Zugriff auf den Inhalt ist es am einfachsten, ihn in eine Liste zu konvertieren (1). Die Hauptverwendung besteht jedoch darin, Argumente an Unterfunktionen zu übergeben, für die keine Konvertierung erforderlich ist (2).
@JiapengZhang Dies ist ein Beispiel für eine rekursive Funktion. f()wird jedes Mal wiederholt mit unterschiedlichen Argumenten aufgerufen. Führen Sie den Code aus und prüfen Sie, ob Sie verstehen können, was passiert.
Richie Cotton
2
Dies wäre ein gutes Beispiel sein , zu zeigen , ...length()wie gut
MichaelChirico
20
Sie sollten zu "R-Sprachdefinition", Abschnitt 2.1.9 Punkt-Punkt-Punkt gehen . Es wird mit R-Installation geliefert. Führen Sie help.start()eine interaktive Sitzung aus, um die HTML-Hilfe aufzurufen, und klicken Sie auf den Link Die R-Sprachdefinition . Sie können auch die PDF- oder HTML- Version von der Hauptseite aus verwenden.
Auf jeden Fall ...wird verwendet, um nicht spezifizierte formale Argumente einer Funktion abzugleichen.
args(sapply)function(X, FUN,..., simplify =TRUE, USE.NAMES =TRUE)NULL
sapply(mtcars, mean, trim =.5)
mpg cyl disp hp drat wt qsec vs am gear 19.2006.000196.300123.0003.6953.32517.7100.0000.0004.000
carb 2.000
Wie Sie sehen können, habe ich bestanden, trim = .5obwohl es nicht als formales sapplyFunktionsargument angegeben ist.
(Beachten Sie, dass dieses Beispiel trivial ist und Sie sapply(mtcars, median)das gleiche Ergebnis erzielen können.)
...
das R-Äquivalent von Pythons Schlüsselworteingabe (def func(**kwargs)
) istAntworten:
Das zur Beschreibung verwendete Wort
...
ist "Auslassungspunkte". Wenn Sie dies wissen, sollte die Suche nach Informationen über das Konstrukt erleichtert werden. Der erste Treffer bei Google ist beispielsweise eine weitere Frage auf dieser Website: Wie wird die Ellipsenfunktion von R beim Schreiben Ihrer eigenen Funktion verwendet?quelle
dots
, zB die?dots
?dots
funktioniert das bei mir nicht,?'...'
tut es aber .Ein kleines Beispiel für den Einstieg.
Die Funktion
f
,, speichert alle bis auf das erste Eingabeargument in der Ellipsenvariablen. Für den Zugriff auf den Inhalt ist es am einfachsten, ihn in eine Liste zu konvertieren (1). Die Hauptverwendung besteht jedoch darin, Argumente an Unterfunktionen zu übergeben, für die keine Konvertierung erforderlich ist (2).quelle
f()
wird jedes Mal wiederholt mit unterschiedlichen Argumenten aufgerufen. Führen Sie den Code aus und prüfen Sie, ob Sie verstehen können, was passiert....length()
wie gutSie sollten zu "R-Sprachdefinition", Abschnitt 2.1.9 Punkt-Punkt-Punkt gehen . Es wird mit R-Installation geliefert. Führen Sie
help.start()
eine interaktive Sitzung aus, um die HTML-Hilfe aufzurufen, und klicken Sie auf den Link Die R-Sprachdefinition . Sie können auch die PDF- oder HTML- Version von der Hauptseite aus verwenden.Auf jeden Fall
...
wird verwendet, um nicht spezifizierte formale Argumente einer Funktion abzugleichen.Wie Sie sehen können, habe ich bestanden,
trim = .5
obwohl es nicht als formalessapply
Funktionsargument angegeben ist.(Beachten Sie, dass dieses Beispiel trivial ist und Sie
sapply(mtcars, median)
das gleiche Ergebnis erzielen können.)quelle
trim
ist ein Argument für diemean
Funktion. Die...
insapply
sind der Mechanismus,trim
an den übergeben werden sollmean
.