R 根据值列表正确检查提供的参数?

R Proper checking of supplied parameters against a list of values?

的一条评论中,@LouisMaddox 说

missing() is useless when you want to use proper checking of supplied parameters against a list though. For a function Foo with parameter bar and optional switch a_or_b (default value "a") you can write Foo <- function(bar, a_or_b=c("a", "b")) ...

是否有 proper/recommended/idiomatic 方法根据可能值列表检查提供的参数?

我试图查看 graphics::plot.default 并瞥见了 graphics::par 但无法从这两个函数中理解任何内容(例如查看 type 参数的处理方式).

例如,在 type 参数的情况下,所有可能的值都是单字母字符串,所以我猜某处有一个大的 switch 语句或一堆 if 声明。

如果选项数量较少,则在函数中使用 match.arg。有关示例,请参见 ?match.arg

如果有效参数都是一个字母字符串,那么您将需要另一种方法,例如:

# returns logical 
is_one_letter_string <- function(x) {
     !missing(x) && length(x) == 1 && is.character(x) && x %in% c(letters, LETTERS)
}