Элемент для сохранения результатов с различной длиной в 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]]
,