¿Cómo calcular la distancia de Hamming en R?

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"

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *