我有两个数据框,df1
与参考数据和df2
与新数据。对于中的每一行df2
,我需要找到最佳(和第二最佳)匹配行df1
就汉明距离而言。
I used e1071
计算汉明距离的包。两个向量之间的汉明距离x
and y
可以计算如下:
x <- c(356739, 324074, 904133, 1025460, 433677, 110525, 576942, 526518, 299386,
92497, 977385, 27563, 429551, 307757, 267970, 181157, 3796, 679012, 711274,
24197, 610187, 402471, 157122, 866381, 582868, 878)
y <- c(356739, 324042, 904133, 959893, 433677, 110269, 576942, 2230, 267130,
92496, 960747, 28587, 429551, 438825, 267970, 181157, 36564, 677220,
711274, 24485, 610187, 404519, 157122, 866413, 718036, 876)
xm <- sapply(x, intToBits)
ym <- sapply(y, intToBits)
distance <- sum(sapply(1:ncol(xm), function(i) hamming.distance(xm[,i], ym[,i])))
结果距离是 25。但是我需要对所有行执行此操作df1
and df2
。一个简单的方法需要一个双循环嵌套,看起来非常慢。
有什么想法可以更有效地做到这一点吗?最后我需要附加到df2
:
- 具有行 id 的列
df1
给出最短距离;
- 距离最近的一列;
- 具有行 id 的列
df1
这给出了第二短的距离;
- 距离第二短的列。
Thanks.