1
Есть ли способ получить доступ к выбору аргумента функции?Доступ от формального аргумента функции
В этом глупом Например:
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
Я хотел бы избежать перепечатывания c("dog","cat","chicken","pig")
пути доступа вектора выбора из декларации, что-то подобное (выдумывает):
noise <- function(animal = c("dog","cat","chicken","pig")){
animal <- match.arg(animal)
sound <- c("woof","meow","cluck","oink")[match(animal, self.choices("animal"))]
sound
}
Это потрясающе, спасибо - это возможно, потому что оно оценивается во время выполнения? Потому что при определении функции 'noise' функция' noise' еще не определена ... – C8H10N4O2
Я думаю, что это удачный результат ленивой оценки: R сначала разбирает скрипт, и к тому времени, когда он оценивает тело, он уже знает подпись функции. – baptiste
Кстати, вероятно, есть способ узнать имя внутри этой функции, но я никогда не помню, какой из 'sys.frame()' и его братьев и сестер является релевантным. – baptiste