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