次のベクトルのようなものがあるとします。
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() としてバンドルされています。
私の質問は、ループが結果を行列として書き込んでいないのはなぜですか、ループが個々の距離計算を上書きしないようにするにはどうすればよいですか (つまり、すべての結果を行列形式で保存します)。