填充矩阵比嵌套for循环更有效的方法

时间:2015-09-13 23:08:59

标签: r performance matrix stringdist

是否有更有效的方法来实现以下目标?

library(dplyr)
filers <- sapply(1:100, function(z) sample(letters, sample(1:20, 1), replace=T) %>% paste(collapse='')) %>% unlist() %>% unname()
n <- length(unique(filers))
similarityMatrix <- matrix(0, nr=n, nc=n)
for (i in 1:n) {
    for (j in 1:n) {
        similarityMatrix[i, j] <- compare_strings(filers[i], filers[j])
    }
}

注意:compare_strings是伪代码,是为了暗示我正在尝试执行的操作类型。根据下面的评论,问题的先前形式存在一些混淆,因为stringdist带有函数stringdistmatrix。我的方案涉及一个没有该选项的函数,因此问题已被修改以反映下面的评论。

1 个答案:

答案 0 :(得分:3)

这可能效率不高,但更具可读性。它还为您分配矩阵:

similarityMatrix <- outer(filers, filers, FUN=compare_strings)