How to Calculate Hamming Distance in R?
In this article, we will be looking at various methods to calculate the harmful distance in the R programming language.
Hamming distance between two data collections is the number of positions at which corresponding elements are different. In other words, we can say that the minimum number of changes is required to make two data collections identical. Hamming distance in R is computed with respect to vectors.
Numeric vectors: A numeric vector is a vector that consists of the integer, decimal, double, etc values. Consider an example we are given two numeric vectors, vect1 = c(1, 3, 4, 5) and vect2 = c(1, 3, 9, 5) as only the corresponding third element of vectors are different so the Hamming distance is equal to one.
In R, we can calculate Hamming distance between two numeric vectors by following the below methods:
Method 1: Using inbuilt sum() function to calculate Hamming distance of the numeric vector
In this method, the user needs to call an inbuilt sum function using which we can compute Hamming distance between numeric vectors. Internally, this function computes the number of corresponding positions at which the element of vect1 is not equal to the element of vect2.
Syntax:
sum(vect1 != vect2)
Example:
Lets us consider two numeric vectors, vect1 = c(10, 2, 3, 7, 8, 12) and vect2 = c(10, 2, 1, 2, 0, 24). Clearly, corresponding third, fourth, fifth and sixth elements are different. Hence, Hamming distance is equal to 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)) |
Output:
[1] "Hamming distance between vect1 and vect2 is equal to 4"
Method 2: Using a custom() function to calculate Hamming distance of the numeric vector
In this approach, the user can create their own custom function which computes the Hamming distance between two numeric vectors. Follow the steps below to calculate Hamming distance using a custom function.
- Define a computerHammingDistance function. It accepts two vectors as parameters, vect1 and vect2.
- Initialize a variable answer as 0, it calculates the final answer.
- Now iterate over the length of the vect1 or vect2 using a for-in loop. If vect1[index] is equal to vect2[index] then increment the answer variable by one.
- After the end of iteration return the answer variable from the function.
- Initialize a variable HammingDistance and assign the value returned by the function to it.
- Print the value represented by the HammingDistance variable.
Example:
Lets us consider two numeric vectors, vect1 = c(11, 7, 3, 2, 8, 12) and vect2 = c(8, 7, 3, 2, 8, 24). Clearly, the corresponding first and last elements are different. Hence, Hamming distance is equal to two.
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)) |
Output:
[1] "Hamming distance between vect1 and vect2 is equal to 2"
Method 3: Using inbuilt sum() function to calculate Hamming distance of binary vector
In this approach, the user needs to call an inbuilt sum function using which we can compute Hamming distance between two binary vectors.
Binary vectors: A binary vector is a vector that consists of values having only two logical values, 0 or 1. Consider an example we are given two binary vectors, vect1 = c(1, 0, 1, 0) and vect2 = c(1, 1, 1, 1). As only the corresponding second and fourth elements of vectors are different so the Hamming distance is equal to two.
Syntax:
sum(vect1 != vect2)
Internally, this function computes the number of corresponding positions at which the element of vect1 is not equal to the element of vect2.
Example:
Lets us consider two binary vectors, vect1 = c(0, 1, 0, 1, 0, 1) and vect2 = c(1, 1, 0, 0, 1, 1). Clearly, corresponding first, fourth and fifth elements are different. Hence, Hamming distance is equal to three.
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)) |
Output:
[1] "Hamming distance between vect1 and vect2 is equal to 3"
Method 4: Using a custom() function to calculate Hamming distance of the binary vector
In this method, the user has to follow the same approach as shown above in method 2 with just changing the vector type to binary in the R programming language.
Example:
Lets us consider two binary vectors, vect1 = c(0, 1, 0, 1, 1, 1) and vect2 = c(1, 1, 0, 0, 1, 1). Clearly, corresponding first and fourth elements are different. Hence, Hamming distance is equal to two.
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)) |
Output:
[1] "Hamming distance between vect1 and vect2 is equal to 2"
Method 5: Using inbuilt sum() function to calculate Hamming distance of string vector
Under this approach, the user has to apply the same approach as shown above in method-1 and method-3 by changing the vector type to string.
String vector: A string vector is a vector that consists of a number of strings. Consider an example we are given two numeric vectors, vect1 = c(“w3wiki”, “R”, “C++”, “Java”) and vect2 = c(“Beginner”, “R”, “C”, “Java”) as only the corresponding first and third elements of vectors are different, hence the Hamming distance is equal to two.
Syntax:
sum(vect1 != vect2)
Example:
Lets us consider two string vectors, vect1 = c(“w3wiki”, “Java”, “Python”, “C++”, “R”, “Swift”, “PHP”) and vect2 = c(“Beginner”, “Java”, “C++”, “R”, “Python”, “Swift”, “C#”). Clearly, corresponding first, third, fourth, fifth and seventh elements are different. Hence, Hamming distance is equal to five.
R
# Swift program to illustrate the working of # sum function to compute Hamming distance # between string vectors # Initializing a string vector vect1 <- c ( "w3wiki" , "Java" , "Python" , "C++" , "R" , "Swift" , "PHP" ) # Initializing another string vector vect2 <- c ( "Beginner" , "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)) |
Output:
[1] "Hamming distance between vect1 and vect2 is equal to 5"
Method 6: Using a custom() function to calculate Hamming distance of string vector
In this method, the user has to follow the same approach as shown above in method 2 and method 4 with just changing the vector type to string in the R programming language.
Example:
Lets us consider two string vectors, vect1 = c(“w3wiki”, “Java”, “C#”, “C++”, “R”, “PHP”, “Swift”) and vect2 = c(“w3wiki”, “Python”, “C”, “R”, “Python”, “Swift”, “C#”). Clearly, corresponding second, third, fourth, fifth, sixth and seventh elements are different. Hence, Hamming distance is equal to six.
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 ( "w3wiki" , "Java" , "C#" , "C++" , "R" , "PHP" , "Swift" ) # Initializing another string vector vect2 <- c ( "w3wiki" , "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)) |
Output:
[1] "Hamming distance between vect1 and vect2 is equal to 6"