给定两个排列:
v1
[1] 4 3 1 5 2
v2
[1] 2 3 4 5 1
如何计算以 R 为基数的 Spearman 尺尺距离(所有元素的总位移)? (可灵活用于任意两种尺寸排列n
)
例如,对于这两个向量,如下:
1
被感动了2
地点来自v1
to v2
2
被感动了4
地点来自v1
to v2
3
被感动了0
地点来自v1
to v2
4
被感动了2
地点来自v1
to v2
5
被感动了0
地点来自v1
to v2
所以总距离将是:2+4+0+2+0 = 8
这是一个使用的方法sapply
, which
, and sum
:
sum(sapply(seq_along(v1), function(i) abs(i - (which(v2 == v1[i])))))
在这里,我们沿着 v1 的索引移动,并计算当前索引中的元素的索引与其在 v2 中的位置的距离。然后将它们汇总在一起。
我怀疑评论中@alexis_laz 的解决方案可能具有更高的计算效率。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)