1

如果我有名字的一个载体,说:RecordLinkage - R一个向量。不符合自我

a = c("tom", "tommy", "alex", "tom", "alexis", "Alex", "jenny", "Al", "michell") 

我想使用levenshteinSim或类似的得到这个矢量中的相似性得分。但是,我不想让它自我评分。例如,"tom" #1得分为"tom" #3。并且不要为"tom" #1反对"tom" #1得分,所以不要自我评分。

我以前用两种不同的载体ab完成了它。然而,如果我使用这个相同的载体,然后"tom" #1将得分反对"tom" #1这是我想要避免。

有没有办法做到这一点?

+0

你希望你的输出什么格式? – Scarabee

回答

0

您可以使用combn生成所有无序对a元素:

a <- c("tom", "tommy", "alex", "tom", "alexis", "Alex", "jenny", "Al", "michell") 

df <- data.frame(t(combn(a, 2)), stringsAsFactors = FALSE) 
df$sim <- RecordLinkage::levenshteinSim(df$X1, df$X2) 

head(df) 
# X1  X2 sim 
# 1 tom tommy 0.6 
# 2 tom alex 0.0 
# 3 tom tom 1.0 
# 4 tom alexis 0.0 
# 5 tom Alex 0.0 
# 6 tom jenny 0.0 
+0

对于较大的集合,我收到一个错误 - 是否有一种方法使用combn来设置一个键(基于另一个变量),以便只返回具有匹配键的组合? – Rtab