我不明白内置函数pmatch的行为(部分字符串匹配)的行为。
该描述提供了以下示例:
pmatch("m", c("mean", "median", "mode")) # returns NA instead of 1,2,3
但使用:
pmatch("m", "mean") # returns 1, as I would have expected.
有人可以向我解释这种行为吗?
我不明白内置函数pmatch的行为(部分字符串匹配)的行为。
该描述提供了以下示例:
pmatch("m", c("mean", "median", "mode")) # returns NA instead of 1,2,3
但使用:
pmatch("m", "mean") # returns 1, as I would have expected.
有人可以向我解释这种行为吗?
改为使用grep
- 的 NA-on-duplicates 行为pmatch
非常烦人:
grep("^m", c("mean", "median", "mode"))
[1] 1 2 3
> grep("ed", c("mean", "median", "mode"))
[1] 2
唯一的缺点是pmatch(x, table...
对两个 args 进行了矢量化,但grep
仅对第二个 args 进行了矢量化。所以grep
不能采用模式向量。但是你可以使用stringi
,否则sapply
。
根据文档:
nomatch
: 在不匹配或部分匹配的位置返回的值。请注意,它被强制转换为整数。
默认为 NA(即,如果有多个部分匹配,nomatch
则将返回 NA)。
pmatch("me", c("mean", "median", "mode"))
[1] NA # returns NA instead of 1,2 since multiple partial matches
pmatch("mo", c("mean", "median", "mode"))
[1] 3 # since single partial match