2015-07-15 5 views
0

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

Как определить список или вектор, чтобы сохранить результаты, даже если они имеют разную длину?

Вот воспроизводимый пример:

x <- c("REF.E600J","SIN MODELO","REF.E705N","24-53793A-K","24-53646A-K","33-53633A-K", 
    "REF.E522N","CON MODELO","VAR MODELO","REF.E610L") 

similitud <- list() 

for (i in c(1:length(x))) { 
similitud[i] <- agrep(x[i],x[-i],max=3,value=T) 
} 
#Error and warning 
Error in similitud[i] <- agrep(x[i], x[-i], max = 3, value = T) : 
replacement has length zero 
In addition: Warning messages: 
1: In similitud[i] <- agrep(x[i], x[-i], max = 3, value = T) : 
number of items to replace is not a multiple of replacement length 
2: In similitud[i] <- agrep(x[i], x[-i], max = 3, value = T) : 
number of items to replace is not a multiple of replacement length 
3: In similitud[i] <- agrep(x[i], x[-i], max = 3, value = T) : 
number of items to replace is not a multiple of replacement length 

ответ

1

Для списков, вы используете [[ не [ для назначения/получить один элемент ([ возвращает подсписок).

for (i in c(1:length(x))) { 
    similitud[[i]] <- agrep(x[i],x[-i],max=3,value=T) 
} 

Просто измените ваш similitud[i] на similitud[[i]].