【发布时间】:2018-03-26 19:32:24
【问题描述】:
我正在尝试计算大名称向量中每对名称之间的 jaccard 相似度(请参见下面的小示例),并将它们的 jaccard 相似度存储在矩阵中。我的函数只是返回 NULL。我做错了什么?
library(dplyr)
df = data.frame(matrix(NA, ncol=3, nrow=3))
df = df %>%
mutate_if(is.logical, as.numeric)
names(df) = c("A.J. Doyle", "A.J. Graham", "A.J. Porter")
draft_names = names(df)
row.names(df) = c("A.J. Feeley", "A.J. McCarron", "Aaron Brooks")
quarterback_names = row.names(df)
library(stringdist)
jaccard_similarity = function(d){
for (i in 1:nrow(d)){
for(j in 1:ncol(d)){
d[i,j] = stringdist(quarterback_names[i], draft_names[j], method ='jaccard', q=2)
}
}
}
df = jaccard_similarity(df)
【问题讨论】:
-
我会尝试查看 quadback_names 和 draft_names 是否有你给他们的输入。我不确定,但
names(df) = c("A.J. Doyle", "A.J. Graham", "A.J. Porter")可能有错误。 -
没有我可以检测到的错误。 for 循环之上的所有内容都完全符合您的预期。
-
你应该使用
stringdistmatrix函数:stringdistmatrix(quarterback_names, draft_names, method = "jaccard", q = 2)。
标签: r for-loop similarity