r-数据帧中行的余弦相似性



我有一个数据集,其中每列都有给定对象不同参数的概率。第一列是指示对象名称的字符串,而所有其他列都有一个数值。

我正在使用"coop"包中的余弦((函数来查找对象之间的余弦相似性。理想情况下,我希望函数将每一行解释为一个单独的向量,并为我提供每个对象之间的单独余弦相似性。无论我尝试了多少,我都无法做到这一点,因为函数不接受字符串值(对象名称(作为输入。

为了简单起见,我们假设我的数据是这样的(实际上它更大更复杂(:

abc 0.75 0.23

xyz 0.80 0.40

jkl 0.32 0.91

我需要的最终结果是一个3x3矩阵,它使用数值比较abc、xyz和jkl。

我很确定我错过了一些非常简单的东西,但我会感谢任何形式的帮助。有什么办法我能做到这一点吗?

这里有一个生成所需3x3矩阵的简单方法。

library(coop)
df = data.frame(name=c('abc', 'xyz', 'jkl'), v1=c(0.75,0.8,0.32), v2 = c(0.23,0.4, 0.91))
# make a matrix transposed with each column corresponding to the name
mm = t(as.matrix(df[,2:3]))
cosine(mm)
#          [,1]      [,2]      [,3]
#[1,] 1.0000000 0.9862394 0.5937443
#[2,] 0.9862394 1.0000000 0.7186021
#[3,] 0.5937443 0.7186021 1.0000000

最新更新