R で dist 関数を使用する方法 (例付き)
R のdist()関数を使用すると、行列またはデータ フレーム内の行間の距離を表示する距離行列を計算できます。
この関数は次の基本構文を使用します。
dist(x, method=”ユークリッド”)
金:
- x:行列またはデータ ブロックの名前。
- メソッド:使用する距離測定。デフォルトは「ユークリッド」ですが、オプションには「最大」、「マンハッタン」、「キャンベラ」、「バイナリ」、または「ミンコフスキー」が含まれます。
次の例は、次のデータ フレームでこの関数を実際に使用する方法を示しています。
#define four vectors a <- c(2, 4, 4, 6) b <- c(5, 5, 7, 8) c <- c(9, 9, 9, 8) d <- c(1, 2, 3, 3) #row bind four vectors into matrix mat <- rbind(a, b, c, d) #view matrix mast [,1] [,2] [,3] [,4] a 2 4 4 6 b 5 5 7 8 c 9 9 9 8 d 1 2 3 3
例 1: dist() を使用してユークリッド距離を計算する
2 つのベクトル A と B の間のユークリッド距離は次のように計算されます。
ユークリッド距離 = √ Σ(A i -B i ) 2
次のコードは、R の行列の各行間のユークリッド距離を示す距離行列を計算する方法を示しています。
#calculate Euclidean distance between each row in matrix
dist(mat)
ABC
b4.795832
c 10.148892 6.000000
d 3.872983 8.124038 13.190906
結果を解釈する方法は次のとおりです。
- 線 a と線 b の間のユークリッド距離は4.795832です。
- 線 a と線 c の間のユークリッド距離は10.148892です。
- 線 a と線 d の間のユークリッド距離は3.872983です。
- 線 b と線 c の間のユークリッド距離は6.000000です。
- 線 b と線 d の間のユークリッド距離は8.124038です。
- 線 c と線 d の間のユークリッド距離は13.190906です。
例 2: dist() を使用して最大距離を計算する
2 つのベクトル A と B 間の最大距離は、すべてのペア要素間の最大差として計算されます。
次のコードは、R の行列の各行間の最大距離を表示する距離行列を計算する方法を示しています。
#calculate Maximum distance between each row in matrix dist(mat, method=" maximum ") ABC b 3 c 7 4 d 3 5 8
例 3: dist() を使用してキャンベラからの距離を計算する
2 つのベクトル A と B の間のキャンベラ距離は次のように計算されます。
キャンベラからの距離 = Σ |A i -B i | / | AI | + |ビジェ|
次のコードは、R の行列の各行間のキャンベラ距離を示す距離行列を計算する方法を示しています。
#calculate Canberra distance between each row in matrix dist(mat, method=" canberra ") ABC b 0.9552670 c 1.5484515 0.6964286 d 1.1428571 1.9497835 2.3909091
例 4: dist() を使用してバイナリ距離を計算する
2 つのベクトル A と B の間のバイナリ距離は、2 つのベクトルが共有する要素の割合として計算されます。
次のコードは、R の行列の各行間のバイナリ距離を示す距離行列を計算する方法を示しています。
#calculate Binary distance between each row in matrix dist(mat, method=" binary ") ABC b 0 c 0 0 d 0 0 0
例 5: dist() を使用してミンコフスキー距離を計算する
2 つのベクトル A と B の間のミンコフスキー距離は次のように計算されます。
ミンコフスキー距離 = (Σ|a i – b i | p ) 1/p
ここで、 iは各ベクトルの i番目の要素、 pは整数です。
次のコードは、R の行列の各行間のミンコフスキー距離 (p=3 を使用) を示す距離行列を計算する方法を示しています。
#calculate Minkowski distance between each row in matrix dist(mat, method=" minkowski ", p= 3 ) ABC b 3.979057 c 8.439010 5.142563 d 3.332222 6.542133 10.614765