Как использовать функцию dist в R (с примерами)
Функцию dist() в R можно использовать для вычисления матрицы расстояний, которая отображает расстояния между строками матрицы или фрейма данных.
Эта функция использует следующий базовый синтаксис:
dist(x, метод=”евклидов”)
куда:
- 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
mat
[,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() для вычисления евклидова расстояния
Евклидово расстояние между двумя векторами, A и B, рассчитывается как:
Евклидово расстояние = √ Σ(A i -B i ) 2
В следующем коде показано, как вычислить матрицу расстояний, которая показывает евклидово расстояние между каждой строкой матрицы в R:
#calculate Euclidean distance between each row in matrix
dist(mat)
a b c
b 4.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() для вычисления максимального расстояния
Максимальное расстояние между двумя векторами, A и B, рассчитывается как максимальная разница между любыми парными элементами.
В следующем коде показано, как вычислить матрицу расстояний, которая показывает максимальное расстояние между каждой строкой матрицы в R:
#calculate Maximum distance between each row in matrix
dist(mat, method=" maximum ")
a b c
b 3
c 7 4
d 3 5 8
Пример 3. Использование dist() для расчета расстояния до Канберры
Канберрское расстояние между двумя векторами, A и B, рассчитывается как:
Канберрское расстояние = Σ |A i -B i | / |А я | + |Б я |
В следующем коде показано, как вычислить матрицу расстояний, которая показывает канберрское расстояние между каждой строкой матрицы в R:
#calculate Canberra distance between each row in matrix
dist(mat, method=" canberra ")
a b c
b 0.9552670
c 1.5484515 0.6964286
d 1.1428571 1.9497835 2.3909091
Пример 4. Использование dist() для вычисления двоичного расстояния
Бинарное расстояние между двумя векторами, A и B, рассчитывается как доля элементов, которые являются общими для двух векторов.
В следующем коде показано, как вычислить матрицу расстояний, которая показывает двоичное расстояние между каждой строкой матрицы в R:
#calculate Binary distance between each row in matrix
dist(mat, method=" binary ")
a b c
b 0
c 0 0
d 0 0 0
Пример 5. Использование dist() для вычисления расстояния Минковского
Расстояние Минковского между двумя векторами, A и B, рассчитывается как:
Расстояние Минковского = (Σ|a i – b i | p ) 1/p
где i — i -й элемент в каждом векторе, а p — целое число.
В следующем коде показано, как вычислить матрицу расстояний, которая показывает расстояние Минковского (с использованием p = 3) между каждой строкой матрицы в R:
#calculate Minkowski distance between each row in matrix
dist(mat, method=" minkowski", p= 3 )
a b c
b 3.979057
c 8.439010 5.142563
d 3.332222 6.542133 10.614765
Дополнительные ресурсы
Как рассчитать сходство Жаккара в R
Как рассчитать сходство косинусов в R
Как рассчитать скалярный продукт в R