Расстояние между двумя наборами точек в R

Тенденции разработки программного обеспечения в 2022 году Изучение

В следующей статье мы собираемся вычислить расстояние между двумя наборами точек на языке программирования R.

В алгебре каждая точка двумерной плоскости представлена ​​координатами x и y соответственно. Расстояние между любыми двумя точками можно вычислить, используя обе их координатные точки. В R существует большое количество встроенных и внешних пакетов, которые можно использовать для вычисления расстояния между двумя наборами точек. В этой статье мы собираемся использовать функции dist() и crossdist() для вычисления расстояния между двумя наборами точек.

Пример 1: вычисление евклидова расстояния

Библиотека прокси в R используется для расчета близости и ее эффективного вычисления. Пакет можно скачать и установить в рабочее пространство с помощью следующей команды:

install.packages("proxy")
library("proxy")

Функцию dist() можно использовать для вычисления расстояния между указанным набором точек. Он возвращает матрицу расстояний указанной матрицы, используя метод, указанный в качестве аргумента.

Syntax: dist(df1, df2, method)

Parameters : 

  • df1 – The first data frame
  • df2 – The second data frame

method  — метод, используемый для вычисления расстояния, который может быть «евклидовым», «манхэттенским» или «максимальным» расстоянием.

R

# Importing the required library
library(proxy)
# creating a data frame
data_frame1 = data.frame(x=c(2, 4),
                         y=c(3, 1))
data_frame2 = data.frame(x=c(8, 2),
                         y=c(6, 3))
print("Distance Matrix ")
# creating a distance matrix
dist(data_frame1, data_frame2,
     method="euclidean")

Выход:

[1] "Distance Matrix "
> #creating a distance matrix 
> dist(data_frame1, data_frame2, method = "euclidean")
    [,1]     [,2]    
[1,] 6.708204 0.000000
[2,] 6.403124 2.828427

В приведенном выше коде сначала мы определили два кадра данных с разными координатами, а затем вычислили расстояние между двумя точками, используя евклидов метод в функции dist().

R

# Defining the point1 with x=2 and y=1
pt1 <- data.frame(x = 2, 
                 y = 1)
# Defining the point 2 with x = 4 and y=1
pt2 <- data.frame(x = 10, 
                 y = 1)
# Defining euclidean distance between two points
euc.dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2))
 
# Calculating euclidean distance
dist<- euc.dist(pt1,pt2)
print("Euclidean Distance")
print(dist)

Выход:

[1] "Euclidean Distance"
> dist
[1] 8

Пример 2: Использование crossdist()

В этом примере мы собираемся определить расстояние между двумя точками с помощью функции crossdist(), доступной в R. Пакет spatstat.geom в R можно установить с помощью следующей команды:

install.packages("spatstat.geom")

Функция crossdist() используется для вычисления попарных расстояний между двумя разными наборами точек.

Syntax: crossdist(x1, y1, x2, y2)

Параметры:

  • x1, y1:числовые векторы, указывающие координаты первого набора точек.

  • x2, y2:числовые векторы, указывающие координаты второго набора точек.

Расстояние между двумя точками с указанием их координат рассчитывается по формуле: √((x 2 — x 1 ) 2 + (y 2 — y 1 ) 2 )

R

library("spatstat.geom")
# Declaring coordinates of points
# First point
x1 = 2
y1 = 1
 
# Second point
x2 = 3
y2 = 1
 
# Printing distance between both points
dist = crossdist(x1, y1, x2, y2)
print("Distance between points")
print(dist)

Выход:

[1] "Distance between points" 
      [,1] 
[1,]    1

В приведенном выше коде сначала мы определили две координаты, используя переменные x1, y1, x2 и y2, после чего вычислили расстояние между этими двумя координатами, передав эти переменные в качестве аргументов в функцию crossdist().

Читайте также:  Как развить логическое мышление для кодирования и не только?
Оцените статью
bestprogrammer.ru
Добавить комментарий