Предположим, у меня есть что-то вроде следующего вектора:Запиши результаты для цикла мер расстояния в виде матрицы в R
text <- as.character(c("string1", "str2ing", "3string", "stringFOUR", "5tring", "string6", "s7ring", "string8", "string9", "string10"))
Я хочу, чтобы выполнить цикл, который делает парных сравнений расстояния редактирования всех возможных комбинаций этих строк (например: строка 1 - строка 2, строка 1 - строка 3 и т. д.). Результат должен быть в матричной форме с строками, равными количеству строк и столбцов, равным количеству строк.
У меня следующий код ниже:
#Matrix of pair-wise combinations
m <- expand.grid(text,text)
#Define number of strings
n <- c(1:10)
#Begin loop; "method='osa'" in stringdist is default
for (i in 1:10) {
n[i] <- stringdist(m[i,1], m[i,2], method="osa")
write.csv(data.frame(distance=n[i]),file="/File/Path/output.csv",append=TRUE)
print(n[i])
flush.console()
}
Функция stringdist() от пакета stringdist {}, но функция также поставляется в пакете базовых UTILS, как adist()
Вопрос в том, почему моя петля не записывает результаты в виде матрицы, и как остановить цикл от перезаписи каждого отдельного расчета расстояния (т. Е. Сохранить все результаты в матричной форме)?
+1 за хороший, чистый воспроизводимый пример. –