我希望在R语言中实现以下功能:对于向量X中的每个元素,我想要找到向量Y中最近的邻居,使得每个X-Y匹配对应的绝对差的总和最小。向量Y的长度至少与向量X相同。
注意:我希望在不进行替换的情况下完成这个任务。例如,给定以下向量:
X= c(3, 6)
Y= c(1, 2, 4, 10),
我希望获得
Z = c(2,4)
,因为将3匹配到2,将6匹配到4,比将3匹配到4,将6匹配到10创建了更小的总距离。*这是我第一次在stack上提出问题,所以提前道歉如果我有任何错误。
更新:使用@merv更具说明性的示例和术语,我正在寻找匹配的全局最优解,而不是局部最优解(第一个/贪心匹配)。例如,如果
X = c(3,7)
并且Y = c(1,4,12)
,我想获得Z = c(1,4)
,其曼哈顿距离为5。我不想要第一个/贪婪的匹配,这将是Z = c(4,12)
- 这将通过找到3的最接近匹配,随后找到7的最接近匹配来获得。
Y[findInterval(X, Y)]
- akrunY[sapply(X, function(x) which.min(abs(Y - x)))]
- pogibasc(11, 11)
就可以工作了。 - txinferno