Свойства функции pmatch - PullRequest
       8

Свойства функции pmatch

0 голосов
/ 07 сентября 2018

Я не понимаю поведение встроенной функции pmatch (частичное совпадение строк).

В описании приводится следующий пример:

pmatch("m",   c("mean", "median", "mode")) # returns NA instead of 1,2,3

но с использованием:

pmatch("m", "mean") # returns 1, as I would have expected. 

Может ли кто-нибудь объяснить мне это поведение?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Используйте вместо этого 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... векторизовано для обоих аргументов, но grep только для второго аргумента. Так что grep не может взять вектор шаблонов. Но вы можете использовать stringi, или же sapply.

0 голосов
/ 07 сентября 2018

Согласно документации:

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
...