En este artículo, veremos varios métodos para calcular la distancia dañina en el lenguaje de programación R.
La distancia de Hamming entre dos colecciones de datos es el número de posiciones en las que los elementos correspondientes son diferentes. En otras palabras, podemos decir que se requiere el número mínimo de cambios para hacer que dos colecciones de datos sean idénticas. La distancia de Hamming en R se calcula con respecto a los vectores.
Vectores numéricos: Un vector numérico es un vector que consta de valores enteros, decimales, dobles, etc. Considere un ejemplo, tenemos dos vectores numéricos, vect1 = c (1, 3, 4, 5) y vect2 = c (1, 3, 9, 5) ya que solo el tercer elemento correspondiente de los vectores es diferente, por lo que la distancia de Hamming es igual a uno
En R, podemos calcular la distancia de Hamming entre dos vectores numéricos siguiendo los siguientes métodos:
Método 1: usar la función sum() incorporada para calcular la distancia de Hamming del vector numérico
En este método, el usuario debe llamar a una función de suma incorporada mediante la cual podemos calcular la distancia de Hamming entre vectores numéricos. Internamente, esta función calcula el número de posiciones correspondientes en las que el elemento de vect1 no es igual al elemento de vect2.
Sintaxis:
suma(vect1 != vect2)
Ejemplo:
Consideremos dos vectores numéricos, vect1 = c(10, 2, 3, 7, 8, 12) y vect2 = c(10, 2, 1, 2, 0, 24). Claramente, los elementos tercero, cuarto, quinto y sexto correspondientes son diferentes. Por lo tanto, la distancia de Hamming es igual a 4.
R
# Swift program to illustrate the working # of sum function to compute Hamming distance # between numeric vectors # Initializing a vector of integers vect1 <- c(10, 2, 3, 7, 8, 12) # Initializing another vector of Qintegers vect2 <- c(10, 2, 1, 2, 0, 24) # Hamming distance HammingDistance = sum(vect1 != vect2) # Print Hamming distance print(paste("Hamming distance between vect1 and vect2 \ is equal to", HammingDistance))
Producción:
[1] "Hamming distance between vect1 and vect2 is equal to 4"
Método 2: usar una función personalizada() para calcular la distancia de Hamming del vector numérico
En este enfoque, el usuario puede crear su propia función personalizada que calcula la distancia de Hamming entre dos vectores numéricos. Siga los pasos a continuación para calcular la distancia de Hamming usando una función personalizada.
- Defina una función computerHammingDistance. Acepta dos vectores como parámetros, vect1 y vect2.
- Inicialice una respuesta variable como 0, calcula la respuesta final.
- Ahora itere sobre la longitud de vect1 o vect2 usando un bucle for-in. Si vect1[índice] es igual a vect2[índice], entonces incremente la variable de respuesta en uno.
- Después del final de la iteración, devuelva la variable de respuesta de la función.
- Inicialice una variable HammingDistance y asígnele el valor devuelto por la función.
- Imprime el valor representado por la variable HammingDistance.
Ejemplo:
Consideremos dos vectores numéricos, vect1 = c(11, 7, 3, 2, 8, 12) y vect2 = c(8, 7, 3, 2, 8, 24). Claramente, los elementos primero y último correspondientes son diferentes. Por lo tanto, la distancia de Hamming es igual a dos.
R
# Swift program to illustrate the working of # sum function to compute Hamming distance # between numeric vectors # Function to compute Hamming Distance computeHammingDistance <- function(vect1, vect2) { # Initialize answer as 0 # It calculates our Hamming distance answer <- 0 # Iterate over the length of the vector for (index in 1:length(vect1)) { # If vect1[index] is not equal to vect2[index] if (vect1[index] != vect2[index]){ # Update answer variable # Increment the count answer = answer + 1 } } # Return the calculated distance return (answer) } # Initializing a vector vect1 <- c(11, 7, 3, 2, 8, 12) # Initializing another vector vect2 <- c(8, 7, 3, 2, 8, 24) # Call computeHammingDistance function HammingDistance = computeHammingDistance(vect1, vect2) # Print Hamming Distance print(paste("Hamming distance between vect1 and vect2\ is equal to", HammingDistance))
Producción:
[1] "Hamming distance between vect1 and vect2 is equal to 2"
Método 3: Uso de la función sum() incorporada para calcular la distancia de Hamming del vector binario
En este enfoque, el usuario debe llamar a una función de suma incorporada mediante la cual podemos calcular la distancia de Hamming entre dos vectores binarios.
Vectores binarios: un vector binario es un vector que consiste en valores que tienen solo dos valores lógicos, 0 o 1. Considere un ejemplo, tenemos dos vectores binarios, vect1 = c (1, 0, 1, 0) y vect2 = c ( 1, 1, 1, 1). Como solo los elementos segundo y cuarto correspondientes de los vectores son diferentes, la distancia de Hamming es igual a dos.
Sintaxis:
suma(vect1 != vect2)
Internamente, esta función calcula el número de posiciones correspondientes en las que el elemento de vect1 no es igual al elemento de vect2.
Ejemplo:
Consideremos dos vectores binarios, vect1 = c(0, 1, 0, 1, 0, 1) y vect2 = c(1, 1, 0, 0, 1, 1). Claramente, los elementos primero, cuarto y quinto correspondientes son diferentes. Por lo tanto, la distancia de Hamming es igual a tres.
R
# Swift program to illustrate the working of # sum function to compute Hamming distance # between binary vectors # Initializing a binary vector vect1 <- c(0, 1, 0, 1, 0, 1) # Initializing another binary vector vect2 <- c(1, 1, 0, 0, 1, 1) # Hamming distance HammingDistance = sum(vect1 != vect2) # Print Hamming distance print(paste("Hamming distance between vect1 and vect2 \ is equal to", HammingDistance))
Producción:
[1] "Hamming distance between vect1 and vect2 is equal to 3"
Método 4: usar una función personalizada() para calcular la distancia de Hamming del vector binario
En este método, el usuario debe seguir el mismo enfoque que se muestra arriba en el método 2 con solo cambiar el tipo de vector a binario en el lenguaje de programación R.
Ejemplo:
Consideremos dos vectores binarios, vect1 = c(0, 1, 0, 1, 1, 1) y vect2 = c(1, 1, 0, 0, 1, 1). Claramente, los elementos primero y cuarto correspondientes son diferentes. Por lo tanto, la distancia de Hamming es igual a dos.
R
# Swift program to illustrate the working of # sum function to compute Hamming distance # between binary vectors # Function to compute Hamming Distance computeHammingDistance <- function(vect1, vect2) { # Initialize answer as 0 # It calculates our Hamming distance answer <- 0 # Iterate over the length of the vector for (index in 1:length(vect1)) { # If vect1[index] is not equal to vect2[index] if (vect1[index] != vect2[index]){ # Update answer variable # Increment the count answer = answer + 1 } } # Return the calculated distance return (answer) } # Initializing a binary vector vect1 <- c(0, 1, 0, 1, 1, 1) # Initializing another binary vector vect2 <- c(1, 1, 0, 0, 1, 1) # Call computeHammingDistance function HammingDistance = computeHammingDistance(vect1, vect2) # Print Hamming Distance print(paste("Hamming distance between vect1 and vect2 \ is equal to", HammingDistance))
Producción:
[1] "Hamming distance between vect1 and vect2 is equal to 2"
Método 5: Uso de la función sum() incorporada para calcular la distancia de Hamming del vector de string
Bajo este enfoque, el usuario debe aplicar el mismo enfoque que se muestra arriba en el método 1 y el método 3 cambiando el tipo de vector a string.
Vector de string: un vector de string es un vector que consta de varias strings. Considere un ejemplo, nos dan dos vectores numéricos, vect1 = c («GeeksforGeeks», «R», «C++», «Java») y vect2 = c («Geeks», «R», «C», «Java» ) ya que solo los elementos correspondientes primero y tercero de los vectores son diferentes, por lo tanto, la distancia de Hamming es igual a dos.
Sintaxis:
sum(vect1 != vect2)
Ejemplo:
Consideremos dos vectores de string, vect1 = c(“GeeksforGeeks”, “Java”, “Python”, “C++”, “R”, “Swift”, “PHP”) y vect2 = c(“Geeks”, “Java ”, “C++”, “R”, “Python”, “Swift”, “C#”). Claramente, los elementos primero, tercero, cuarto, quinto y séptimo correspondientes son diferentes. Por lo tanto, la distancia de Hamming es igual a cinco.
R
# Swift program to illustrate the working of # sum function to compute Hamming distance # between string vectors # Initializing a string vector vect1 <- c("GeeksforGeeks", "Java", "Python", "C++", "R", "Swift", "PHP") # Initializing another string vector vect2 <- c("Geeks", "Java", "C++", "R", "Python", "Swift", "C#") # Hamming distance HammingDistance = sum(vect1 != vect2) # Print Hamming distance print(paste("Hamming distance between vect1 and vect2 is\ equal to", HammingDistance))
Producción:
[1] "Hamming distance between vect1 and vect2 is equal to 5"
Método 6: usar una función personalizada() para calcular la distancia de Hamming del vector de string
En este método, el usuario debe seguir el mismo enfoque que se muestra arriba en el método 2 y el método 4 con solo cambiar el tipo de vector a string en el lenguaje de programación R.
Ejemplo:
Consideremos dos vectores de string, vect1 = c(“GeeksforGeeks”, “Java”, “C#”, “C++”, “R”, “PHP”, “Swift”) y vect2 = c(“GeeksforGeeks”, “Python ”, “C”, “R”, “Python”, “Swift”, “C#”). Claramente, los elementos segundo, tercero, cuarto, quinto, sexto y séptimo correspondientes son diferentes. Por lo tanto, la distancia de Hamming es igual a seis.
R
# Swift program to illustrate the working of # sum function to compute Hamming distance # between string vectors # Function to compute Hamming Distance computeHammingDistance <- function(vect1, vect2) { # Initialize answer as 0 # It calculates our Hamming distance answer <- 0 # Iterate over the length of the vector for (index in 1:length(vect1)) { # If vect1[index] is not equal to vect2[index] if (vect1[index] != vect2[index]){ # Update answer variable # Increment the count answer = answer + 1 } } # Return the calculated distance return (answer) } # Initializing a string vector vect1 <- c("GeeksforGeeks", "Java", "C#", "C++", "R", "PHP", "Swift") # Initializing another string vector vect2 <- c("GeeksforGeeks", "Python", "C", "R", "Python", "Swift", "C#") # Call computeHammingDistance function HammingDistance = computeHammingDistance(vect1, vect2) # Print Hamming Distance print(paste("Hamming distance between vect1 and vect2 is equal to", HammingDistance))
Producción:
[1] "Hamming distance between vect1 and vect2 is equal to 6"