我有以下格式的字符向量
char1 <- c(“Hello”, “was”, “this”, “is”, “that”, “Boston”, “San”, “Francisco”)
char2 <- c(“John”, “was”, “they”, “is”, “Hello”, “Boston”, “San”, “Diego”)
char3 <- c(“John”, “very”, “happens”, “is”, “Hello”, “has”, “San”, “Diego”)
list <- list(char1, char2, char3)
但是,我有大约500个,每个长度为100,000。
如何计算此列表中所有向量的成对Jaccard索引(相似性度量)并将其作为数据帧输出(NA用于比较相同的字符向量)?这样做最有效的方法是什么?
谢谢!
答案 0 :(得分:3)
您可以尝试以下方法,以union
intersect
和dplyr
获取所有成对距离
dist <- unlist(lapply(combn(list, 2, simplify = FALSE), function(x) {
length(intersect(x[[1]], x[[2]]))/length(union(x[[1]], x[[2]])) }))
dist
[1] 0.4545455 0.2307692 0.4545455
要查看哪些对与哪些值相关联,您可以添加索引:
cbind(t(combn(3,2)), dist)
dist
[1,] 1 2 0.4545455
[2,] 1 3 0.2307692
[3,] 2 3 0.4545455