2015-10-13 2 views
0

Я использую пакет stringdist для сравнения некоторых векторов строк, но я продолжаю получать другой ответ, чем то, что, как я думаю, должен, когда я пытаюсь проверить пакет.Использование stringsim в stringdist

Я хочу, чтобы это сделать:

stringsim('PANDIAN', 'PANIAN', method="lv") 
[1] 0.8571429 

To 2 колонки в dataframe

stringsim(testdf.lv$Last[1], testdf.lv$matchedname[1], method="lv") 

Но я получаю эту ошибку:

Error in UseMethod("lengths") : 
    no applicable method for 'lengths' applied to an object of class "factor" 

мне нужно, чтобы быть в состоянии сделать это потому, что в идеале я бы заменил номера строк на i и запустил его в цикле. Возможно ли это? Я пробовал искать подобные ошибки, но другие вопросы были не очень полезными.

+0

Вы действительно должны предоставить [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example), который определяет 'testdf.lv', иначе мы понятия не имею, что в нем. Однако похоже, что у вас есть факторы, а не переменные символов. Попробуйте 'stringsim (as.chracter (testdf.lv $ Last [1]), as.character (testdf.lv $ matchedname [1]), method =" lv ")' – MrFlick

+0

@MrFlick Извините, что вы правы. Я должен был включить полный код. И да! Это потому, что столбец testdf.lv был вектором вместо персонажа. Спасибо! –

ответ

0

Так спасибо @MrFlick. Оказывается, данные, которые я использовал в колонке:

testdf.lv$Last 

По ошибке был охарактеризован как фактор-переменная вместо характера. Изменение этого столбца в символ со следующим:

testdf.ld$Last <- as.character(testdf.ld$Last) 

Исправлена ​​ошибка, и я был в состоянии переписать код в цикл, чтобы пройти через весь dataframe.

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