1
Gibt es eine Möglichkeit, auf die Auswahlmöglichkeiten eines Arguments einer Funktion zuzugreifen?Zugriffsmöglichkeiten aus formalem Argument der Funktion
In diesem dummen Beispiel:
noise <- function(animal = c("dog","cat","chicken","pig")){ # default animal is "dog"
animal <- match.arg(animal)
sound <- c("woof","meow","cluck","oink")[match(animal, c("dog","cat","chicken","pig"))]
sound
}
noise("chicken") # returns desired result
Ich würde c("dog","cat","chicken","pig")
durch den Zugriff auf den Vektor der Wahl aus der Erklärung, etwas ähnliches zu (so dass diese nach oben) zu vermeiden, wie Abtippen:
noise <- function(animal = c("dog","cat","chicken","pig")){
animal <- match.arg(animal)
sound <- c("woof","meow","cluck","oink")[match(animal, self.choices("animal"))]
sound
}
Das ist super, danke - das ist möglich, weil es zur Laufzeit ausgewertet wird? Weil bei der Definition der Funktion 'noise' die Funktion' noise' noch nicht definiert wurde ... – C8H10N4O2
Ich denke, es ist ein glückliches Ergebnis einer faulen Bewertung: R analysiert zuerst das Skript, und zu der Zeit bewertet es den Körper bereits kennt die Signatur der Funktion – baptiste
BTW gibt es wahrscheinlich einen Namen-agnostischen Weg, um diese Informationen innerhalb der Funktion zu erhalten, aber ich erinnere mich nie, welche von 'sys.frame()' und seine Geschwister relevant ist. – baptiste