當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。