2016-01-07 5 views
1

У меня есть некоторые проблемы, чтобы понять результат функции agrep(). Я не понимаю, что я пропустил в описании функции. agrep() предназначен для нечеткого соответствия, и я хотел бы использовать его для исправления некоторых орфографических ошибок. Я бы хотел разрешить только максимум 2 вставки/удаления/замены.R agrep() поведение функции

Вот мой код только для примера:

check=c("73SAINTGERMAINLACHAMBOTTE","73CHAMBERY") 
agrep("73SAINTGERVAIS",check,ignore.case=TRUE,max.distance=2,value=TRUE) 

Вот то, что я ожидаю, не имеет никакого ответа на этот запрос, потому что я не могу превратить "73SAINTGERVAIS" в "73SAINTGERMAINLACHAMBOTTE" или "73CHAMBERY" максимуме 2 вставок/удаления/замены. Однако результат:

[1] "73SAINTGERMAINLACHAMBOTTE" 

Означает ли это, что понятие встройки/удалений/замен не символ на основе (я имею в виду строку "MAINLACHALBOTTE" рассматривается как 1 вставка)?

+0

ок спасибо, я не понял понятия «внутри», это ясно сейчас. – Vivien

ответ

2

Это потому, что он выполняет частичное согласование. Например, '73SAINTGERVAIS' находится на двух расстоянии от подстроки '73SAINTGERMAIN'.

Вы можете попробовать adist вместо так:

check=c("73SAINTGERMAINLACHAMBOTTE","73CHAMBERY", "73SAINTGERMAIN") 
adist("73SAINTGERVAIS",check) <= 2 
     [,1] [,2] [,3] 
[1,] FALSE FALSE TRUE 

Если вы хотите, чтобы вектор соответствующих входных строк в качестве вывода, можно дополнительно сделать следующее:

check[as.logical(adist("73SAINTGERVAIS",check) <= 2)] 
+0

Отлично! Благодаря! – Vivien

 Смежные вопросы

  • Нет связанных вопросов^_^