R语言的匹配函数 - pmatch

pmatch

该函数的一个用途是:在设置函数参数时,限制输入的参数范围。

pmatch(x, table, nomatch = NA_integer_, duplicates.ok = FALSE)
# 返回首次匹配元素在table中的位置
  • x:标量或向量,必须为 character类型
  • table:向量,必须为 character 类型
  • nomatch:未匹配时返回值,必须设定为 int 类型
  • duplicates.ok:在匹配过程中,当存在多匹配时,会返回首次匹配的位置,并从记录中删除,再次匹配时将忽略该位置(FALSE);为TRUE时,不忽略该位置,会重复匹配
pmatch("", "")                             # returns NA
pmatch("m",   c("mean", "median", "mode")) # returns NA
pmatch("med", c("mean", "median", "mode")) # returns 2

pmatch(c("", "ab", "ab"), c("cbc", "ab", "abd"), dup = FALSE)
# return NA, 2, 3
pmatch(c("", "ab", "ab"), c("abc", "ab"), dup = TRUE)
# return NA, 2, 2

注意

该函数主要包括:精确匹配和模糊匹配

如果精确匹配时,考虑第一次精确匹配,并且记录第一次精确匹配的位置。

如果没有精确匹配,则考虑模糊匹配,并且记录第一次模糊匹配的位置(以开头匹配的为首要记录的)。

如果x的整个元素与表中元素的开头都匹配(或者都不在开头的模糊匹配),则返回NA。

> pmatch("ab", c("cabc", "dab", "abd"), dup = FALSE)
[1] 3
> pmatch("ab", c("abc", "abd", "abe"), dup = FALSE)
[1] NA
> pmatch("ab", c("dabc", "cabs"), dup = FALSE)
[1] NA
> pmatch("ab", c("ab", "ab", "ab"), dup = FALSE)
[1] 1

此外,空字符串什么也不能匹配,甚至不能与空字符串完全匹配。

如果duplicates.ok为FALSE,则一旦匹配,表的值将从后续匹配的搜索中排除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值