Элемент для сохранения результатов с различной длиной в R

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

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

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

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]],

Другие вопросы по тегам