2016-11-10 56 views
0

假设我有一个向量X,其中包含点(1,4,5,6,3,2,5,7,8,44,3) ,7) 我需要我想找到最接近6.4的K = 2个点,这意味着6和7是否有一个函数可以做到这一点,如果没有,在R中做什么最好的方法?查找矢量的K个最近点到Rstudio中的单独点

+0

'×〔顺序(ABS(X-6.4))] [1:2]' – Sotos

回答

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 
+1

总是更好地使用'seq_len(k)'而不是'1:k'。 – Roland

+0

我不知道(那更好)。谢谢 – Sotos

+1

它更安全,因为它可以防止诸如'1:0'之类的令人讨厌的惊喜。 – Roland