2016-11-10 54 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