【发布时间】:2013-08-05 22:53:49
【问题描述】:
假设我有类似下面的向量:
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{} 包,但该函数也作为 adist() 捆绑在基本 utils 包中
我的问题是,为什么我的循环没有将结果写入矩阵,以及如何阻止循环覆盖每个单独的距离计算(即:以矩阵形式保存所有结果)?
【问题讨论】:
-
+1 是一个漂亮、干净、可重现的例子。
标签: r for-loop distance string-matching stringdist