Из вашего примера у нас есть выбор "CORE"
и "ALL"
. Если это две опции, мы указываем их в определении функции для аргумента 'members'
. E.g.:
foo <- function(x, members = c("CORE", "ALL")) {
## do something
}
Это определение функции устанавливает допустимые значения для аргумента 'members'
со значением по умолчанию "CORE"
, поскольку это первая именованная опция.
Код, который используется внутри тела функции, - match.arg()
, как уже упоминал @Joris, но поскольку мы настроили функцию, как указано выше, мы можем просто использовать значение match.arg(members)
.
Таким образом, мы можем написать foo
как:
foo <- function(x, members = c("CORE", "ALL")) {
## evaluate choices
members <- match.arg(members)
## do something
print(members)
}
Который мы используем так:
> foo()
[1] "CORE"
> foo(members = "CORE")
[1] "CORE"
> foo(members = "ALL")
[1] "ALL"
> foo(members = "3rdRate")
Error in match.arg(members) : 'arg' should be one of “CORE”, “ALL”
Обратите внимание на поведение, когда мы предоставляем строку, не входящую в набор опций. Мы получаем интуитивное сообщение об ошибке, все потому, что мы установили параметры в аргументах функции.