打印最近的数字

时间:2017-11-21 20:51:49

标签: r

我在以下任务中遇到了几个问题: 我有向量w=c(1,4,8,8,6,3,11,24,16)k=9 下一个任务是打印字符串索引(从w),其中最近的数字到k。 下一个代码打印出唯一的一个索引(向量w的第5或第6个字符串),并且不考虑向量具有两个相同的数字--8更接近于k = 9。但是需要打印所有相关索引(在这种情况下为5和6 - 相应字符串的数量)。如何打印所有相关索引?

dt = data.table(w, val = w)
setkey(dt,w)

dt[J(k), roll = "nearest"]
d1=dt[J(k), .I, roll = "nearest", by = .EACHI]
d1[,2]

1 个答案:

答案 0 :(得分:1)

我会做类似下面的事情:

w <- c(1,4,8,8,6,3,11,24,16)
k <- 9
distances <- abs(k-w)
which(distances == min(distances))