R语言【base】——match.arg通过部分匹配校正参数输入,参数的输入值从首字母开始,保持连续,宁缺勿错

Package base version 4.3.2

match.arg通过部分匹配校正参数输入

R 复制代码
match.arg(arg, choices, several.ok = FALSE)

match.arg 的功能是:将参数【arg】的传入值与参数【choices】的传入值进行匹配,参数choices的传入值可以视为一个候选值列表。


match.arg的参数

  • 参数【arg】:当参数【serveral.ok】为 FALSE时,既可以传入一个长度为1的字符型向量,也可以传入NULL,NULL表示执行 choices[1] 。当参数【serveral.ok】为 TRUE时,则传入的字符型向量的长度可以大于1。

  • 参数【choices】:作为候选值列表的字符型向量,经常忽略。

  • 参数【serveral.ok】:通过逻辑值判断参数【arg】拥有的元素个数是否可以超过1。


match.arg的使用技巧

当使用match.arg 时只给参数【arg】传入值,即match.arg(arg) ,那么调用match.arg的函数中对参数【arg】定义的默认值就将作为参数【choices】的传入值。

匹配过程通过pmatch完成,根据pmatch的特性:参数【arg】可以是缩写,但是当参数【arg】的传入值为空字符串("")时不会有任何匹配项,甚至不会匹配另一个空字符串。

传入参数【arg】的简写必须是从首字母开始的连续字符串。


match.arg的返回值说明

如果有完全匹配或唯一部分匹配,则是该匹配的未缩写版本;否则,如果 参数【several.ok】为 FALSE(默认值),则表示出错。当 参数【several.ok】为TRUE且参数【arg】中(至少)有一个元素匹配时,将返回所有未缩写的匹配结果。


match.arg的实例说明

为了更直白地了解match.arg的功能用法,笔者将通过一个示例进行展示。

R 复制代码
test_match.arg <- function(
    taxon_rank = c("species", "genus", "supragenus", "family", "order"))
{
  taxon_rank <- match.arg(taxon_rank)
  print(taxon_rank)
}
  1. 测试完全匹配
R 复制代码
> test_match.arg(taxon_rank = "species")
[1] "species"
> test_match.arg(taxon_rank = c("species"))
[1] "species"
  1. 测试拼写错误
R 复制代码
> test_match.arg(taxon_rank = c("specise"))
Error in match.arg(taxon_rank) : 
  'arg' should be one of "species", "genus", "supragenus", "family", "order"
  1. 测试从首字母开始的连续字符串
R 复制代码
> test_match.arg(taxon_rank = c("sp"))
[1] "species"
> test_match.arg(taxon_rank = c("s"))
Error in match.arg(taxon_rank) : 
  'arg' should be one of "species", "genus", "supragenus", "family", "order"

因为以"s"开头的候选值有两个:"species"和"supragenus",所以报错!

  1. 测试从非首字母开始的连续字符串
R 复制代码
> test_match.arg(taxon_rank = c("pecies"))
Error in match.arg(taxon_rank) : 
  'arg' should be one of "species", "genus", "supragenus", "family", "order"
相关推荐
lisw052 天前
R语言的专业网站top5推荐
开发语言·r语言
清同趣科研2 天前
扩增子分析|R分析之微生物生态网络稳定性评估之节点和连接的恒常性、节点持久性以及组成稳定性指数计算
开发语言·r语言
zm-v-159304339864 天前
解锁生命周期评价密码:OpenLCA、GREET 与 R 语言的融合应用
r语言·生命周期
生信大杂烩4 天前
R语言绘图 | 渐变火山图
数据分析·r语言
KY_chenzhao5 天前
用R语言+随机森林玩转遥感空间预测-基于R语言机器学习遥感数据处理与模型空间预测技术及实际项目案例分析
随机森林·机器学习·r语言·生态·遥感·空间预测
没有梦想的咸鱼185-1037-16635 天前
【生命周期分析(Life Cycle Assessment: LCA)】基于OpenLCA、GREET、R语言的生命周期评价方法、模型构建及典型案例应用
数据分析·r语言
没有梦想的咸鱼185-1037-16636 天前
全球森林数据如何分析?基于R语言森林生态系统结构、功能与稳定性分析与可视化
开发语言·随机森林·数据分析·r语言
Tiger Z7 天前
R 语言科研绘图 --- 桑基图-汇总
开发语言·r语言·贴图
Expecto09 天前
因子分析——数学原理及R语言代码
算法·r语言·统计学·多元统计分析
人类群星闪耀时9 天前
R语言数据挖掘:从“挖井”到“淘金”
开发语言·数据挖掘·r语言