假设我有一个由(1,4,5,6,3,2,5,7,8,44,3,7)等点组成的向量X 我需要找到最接近6.4的K = 2点,意思是6和7是否有一个函数可以做到这一点,如果没有,那么在R中做到这一点的最佳方法是什么?
答案 0 :(得分:1)
然后创建一个函数,
fun1 <- function(vec, val, k){
vec[order(abs(vec-val))][seq_len(k)]
}
fun1(x, 6.4, 2)
#[1] 6 7
fun1(x, 6.4, 3)
#[1] 6 7 7
fun1(x, 5, 4)
#[1] 5 5 4 6
要获取唯一值,请添加unique
,
fun1 <- function(vec, val, k){
unique(vec[order(abs(vec-val))])[seq_len(k)]
}
fun1(x, 6.4, 3)
#[1] 6 7 5