Gibt es eine Möglichkeit, alle Funktionsparameter innerhalb einer Funktion zu erhalten?Erhalten Sie eine Liste aller Funktionsparameter von innerhalb der Funktion
match.call()
gibt keine Parameter mit Standardeinstellungen zurück, aber nicht überschrieben. Zum Beispiel:
xf <- function (a, b="Hi", c=TRUE) {
print(as.list(match.call(expand.dots=FALSE)))
}
>xf(3)
[[1]]
xf
$a
[1] 3
Ich schreibe ein Paket mit einer Funktion, die eine vorhandene Funktion aufruft, aber ich möchte in der Lage Standardwerte festlegen, die nicht auf der vorhandenen Funktion sind. (Ich hatte geplant, über die Verwendung der Liste von match.call
, vorbei in die andere Funktion mit do.call
und Rückkehr das Ergebnis
Update:.. Eine interessante Frage, die S3 betrifft Verfahren habe ich eine neue S3-Verfahren und verwendet @ Ferdinand.krafts Antwort as.list(environment(), all.names=TRUE)
Das Argument all.names hält Namen, die mit einem .
in der Liste beginnen.Es stellt sich heraus, dass der Methodenversand der Funktionsumgebung mehrere Argumente hinzufügt, einschließlich .Generic
.Class
und einigen anderen Sie übergeben diese an die Funktion in do.call
. Eine der anderen Antworten kann eine bessere Allround-Lösung sein, aber ich mag die Einfachheit von as.list(environment())
.
tut 'arg s' was du willst? –