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)
}
在
missing()
is useless when you want to use proper checking of supplied parameters against a list though. For a functionFoo
with parameterbar
and optional switcha_or_b
(default value "a") you can writeFoo <- 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)
}