Wenn wir den Rumpf einer Funktion mit Punkten ...
in seiner Argumentliste anzeigen, können wir normalerweise die Funktion finden, die diese Punkteargumente empfängt.Wo werden fehlende Punkte (`...`) verarbeitet?
Zum Beispiel können wir im Körper von sapply()
sehen, dass die Punkte Argumente durch lapply()
übergeben werden.
sapply
# function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
# {
# FUN <- match.fun(FUN)
# answer <- lapply(X = X, FUN = FUN, ...)
# ## rest of function body
# }
# <bytecode: 0x000000000e05f0b0>
# environment: namespace:base>
jedoch in lapply()
gibt es Punkte ...
in der Argumentliste aber nicht in dem Funktionskörper.
lapply
# function (X, FUN, ...)
# {
# FUN <- match.fun(FUN)
# if (!is.vector(X) || is.object(X))
# X <- as.list(X)
# .Internal(lapply(X, FUN))
# }
# <bytecode: 0x0000000009414f08>
# <environment: namespace:base>
Also, wo die Punkte ...
Argumente in lapply()
verarbeitet werden? Wo werden sie hingeführt? Wir können sie nicht an match.fun()
übergeben. Ich gehe davon aus, dass sie in .Internal()
übergeben werden, aber ich sehe keinen Grund dafür, dass dies funktioniert, wenn ich nicht sehe, dass sie an irgendeine Funktion im Funktionskörper übergeben werden.