A: ベクトル内の最も近い値を見つける方法


次の基本構文を使用して、R の 2 つのベクトルの要素間で最も近い値を見つけることができます。

 #define cut points
cuts <- c(-Inf, vector2[-1]-diff(vector2)/2, Inf)

#for each value in vector1, find closest value in vector2
cut(vector1, breaks=cuts, labels=vector2)

次の例は、この構文を実際に使用する方法を示しています。

例: R のベクトル内の最も近い値を見つける

R に次の 2 つのベクトルがあるとします。

 #definevectors
vector1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
vector2 <- c(3, 5, 8, 11)

ここで、最初のベクトルの各値について、2 番目のベクトルで最も近い値を見つけたいとします。

これを行うには、次の構文を使用できます。

 #define cut points
cuts <- c(-Inf, vector2[-1]-diff(vector2)/2, Inf)

#for each value in vector1, find closest value in vector2
cut(vector1, breaks=cuts, labels=vector2)

 [1] 3 3 3 3 5 5 8 8 8 11

結果を解釈する方法は次のとおりです。

  • Vector1 (1) の最初の値の場合、Vector2 に最も近い値は3です。
  • Vector1 (2) の 2 番目の値の場合、Vector2 に最も近い値は3です。
  • Vector1 (3) の 3 番目の値の場合、Vector2 に最も近い値は3です。
  • Vector1 の 4 番目の値 (4) では、Vector2 に最も近い値は3です。
  • Vector1 の 5 番目の値 (5) の場合、Vector2 に最も近い値は5です。

等々。

: このメソッドは、2 番目のベクトルの値が厳密に増加していることを前提としています。まだソートしていない場合は、最初に 2 番目のベクトルをソートする必要があるかもしれません。

追加リソース

次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。

R でグループごとの平均を計算する方法
R で列の平均を計算する方法
R で特定の列を合計する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です