当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R match.arg 使用部分匹配的参数验证


R语言 match.arg 位于 base 包(package)。

说明

match.arg 将字符 argchoices 指定的候选值表进行匹配。

用法

match.arg(arg, choices, several.ok = FALSE)

参数

arg

字符向量(长度为 1,除非 several.okTRUE )或 NULL ,这意味着采用 choices[1]

choices

候选值的字符向量,经常缺失,请参阅“详细信息”。

several.ok

逻辑指定arg是否应该允许有多个元素。

细节

在单参数形式 match.arg(arg) 中,选项是从调用 match.arg 的函数的形式参数 arg 的默认设置中获得的。 (由于默认参数匹配会将 arg 设置为 choices ,因此这可以作为“length one except several.ok is TRUE”规则的例外,并返回第一个元素。)

匹配是使用 pmatch 完成的,因此 arg 可能会缩写,并且空字符串 ( "" ) 永远不会匹配,甚至不会匹配,请参阅 pmatch

精确或唯一部分匹配的未缩写版本(如果有);否则,如果 several.ok 为 false,则按照默认值发出错误信号。当 several.ok 为 true 并且(至少)arg 的一个元素具有匹配项时,将返回匹配项的所有未缩写版本。

警告

给出的错误消息可能会更改,并且在R4.2.0。不要在包中测试它们。

例子

require(stats)
## Extends the example for 'switch'
center <- function(x, type = c("mean", "median", "trimmed")) {
  type <- match.arg(type)
  switch(type,
         mean = mean(x),
         median = median(x),
         trimmed = mean(x, trim = .1))
}
x <- rcauchy(10)
center(x, "t")       # Works
center(x, "med")     # Works
try(center(x, "m"))  # Error
stopifnot(identical(center(x),       center(x, "mean")),
          identical(center(x, NULL), center(x, "mean")) )

## Allowing more than one 'arg' and hence more than one match:
match.arg(c("gauss", "rect", "ep"),
          c("gaussian", "epanechnikov", "rectangular", "triangular"),
          several.ok = TRUE)
match.arg(c("a", ""),  c("", NA, "bb", "abc"), several.ok=TRUE) # |-->  "abc"

也可以看看

pmatchmatch.funmatch.call

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Argument Verification Using Partial Matching。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。