2016-11-10 12 views
0

私は(1,4,5,6,3,2,5,7,8,44,3 、7) と私はK = 2ポイントが6.4に最も近いことを見出したいと思う必要があります。6と7はそこに関数があります。そうでなければ、Rでそれを行う最良の方法は何ですか?Rstudioの別の点へのベクトルのK最近傍点を見つける

+0

'のX [順序(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

'1:k'の代わりに' seq_len(k) 'を使う方が良いです。 – Roland

+0

私はそれを知らなかった(それが良かった)。ありがとう – Sotos

+1

'1:0'のような不意の驚きを防ぐので安全です。 – Roland

関連する問題