我正在尝试计算几篇科学论文之间的接近度。当论文 A 的 2 位作者住在阿姆斯特丹,1 位在纽约,而论文 B 的 3 位作者住在阿姆斯特丹时,我希望结果为 3+2=5。我有两个大矩阵,其中列代表论文,行代表城市。例如:
矩阵A:
A1 A2
美国加利福尼亚州戴维斯市 4 .
美国加利福尼亚州洛杉矶。1
美国加利福尼亚州帕洛阿尔托。1
美国加利福尼亚州萨克拉门托 2 .
美国加利福尼亚州圣莫尼卡。2
和矩阵B:
B1
美国加利福尼亚州戴维斯 1 美国加利福尼亚州
洛杉矶 2 美国加利福尼亚州
帕洛阿尔托。
美国加利福尼亚州萨克拉门托 1 美国加利福尼亚州
圣莫尼卡 2
两者的叉积 (MatrixA %*% t(MatrixB)) 接近我想要的。这会给我,对于 A2-B1,
(0*1)+(1*2)+(1*0)+(0*1)+(2*2)=6
但我想要的是:
(0*1)+(1+2)+(1*0)+(0*1)+(2+2)=7
因此,当一个为 0 时相乘,否则相加。有没有一种有效的(!)方法来实现这一点,使用 R?