R语言 如何计算汉明距离

R语言 如何计算汉明距离

在这篇文章中,我们将研究在R编程语言中计算有害距离的各种方法。

两个数据集合之间的汉明距离是对应元素不同的位置数。换句话说,我们可以说,要使两个数据集合相同,需要的最小变化数。R中的汉明距离是针对向量计算的。

如何在R语言中计算汉明距离?

数字向量: 数字向量是一个由整数、十进制、双数等数值组成的向量。考虑一个例子,我们给了两个数字向量,vect1 = c(1, 3, 4, 5)和vect2 = c(1, 3, 9, 5),因为只有对应的第三个元素不同,所以Hamming距离等于1。

在R中,我们可以通过以下方法计算两个数字向量之间的汉明距离。

方法1:使用内置的sum()函数 来计算数字向量的汉明距离

在这个方法中,用户需要调用一个内置的sum函数,利用这个函数我们可以计算数字向量之间的汉明距离。在内部,这个函数计算出vect1的元素与vect2的元素不相等的对应位置的数量。

语法

sum(vect1 != vect2)

例子

让我们考虑两个数字向量,vect1 = c(10, 2, 3, 7, 8, 12) 和 vect2 = c(10, 2, 1, 2, 0, 24)。显然,相应的第三、第四、第五和第六元素是不同的。因此,汉明距离等于4。

# 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))

输出

[1] "Hamming distance between vect1 and vect2 is equal to 4"

方法2:使用自定义()函数来计算数字向量的汉明距离

在这种方法中,用户可以创建自己的自定义函数,计算两个数字向量之间的汉明距离。按照下面的步骤,使用自定义函数计算汉明距离。

  • 定义一个 computerHammingDistance 函数。它接受两个向量作为参数,vect1和vect2。
  • 初始化一个变量答案为0,它计算出最终的答案。
  • 现在使用for-in循环遍历vect1或vect2的长度。如果vect1[index]等于vect2[index],那么答案变量增量为1。
  • 迭代结束后,从函数中返回答案变量。
  • 初始化一个变量HammingDistance,并将函数返回的值赋给它。
  • 打印HammingDistance变量所代表的值。

例子

让我们考虑两个数字向量,vect1 = c(11, 7, 3, 2, 8, 12) 和 vect2 = c(8, 7, 3, 2, 8, 24)。很明显,相应的第一个和最后一个元素是不同的。因此,汉明距离等于2。

# 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))

输出

[1] "Hamming distance between vect1 and vect2 is equal to 2"

方法3:使用内置的sum()函数来计算二进制向量的汉明距离

在这种方法中,用户需要调用一个内置的sum函数,利用它我们可以计算两个二进制向量之间的汉明距离。

二进制向量。二进制向量是一个由只有两个逻辑值的数值组成的向量,即0或1。考虑一个例子,我们给了两个二进制向量,vect1 = c(1, 0, 1, 0),vect2 = c(1, 1, 1, 1)。由于只有相应的第二和第四元素不同,所以汉明距离等于2。

语法

sum(vect1 != vect2)

在内部,这个函数计算出vect1的元素不等于vect2的元素的对应位置的数量。

例子

让我们考虑两个二进制向量,vect1 = c(0, 1, 0, 1, 0, 1)和vect2 = c(1, 1, 0, 0, 1, 1)。很明显,对应的第一、第四和第五元素是不同的。因此,汉明距离等于3。

# 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))

输出

[1] "Hamming distance between vect1 and vect2 is equal to 3"

方法4:使用自定义()函数来计算二进制矢量的汉明距离

在这种方法中,用户必须遵循与上述方法2相同的方法,只是将R编程语言中的向量类型改为二进制。

例子

让我们考虑两个二进制向量,vect1 = c(0, 1, 0, 1, 1, 1) 和 vect2 = c(1, 1, 0, 0, 1, 1)。很明显,对应的第一和第四元素是不同的。因此,汉明距离等于2。

# 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))

输出

[1] "Hamming distance between vect1 and vect2 is equal to 2"

方法5:使用内置的sum()函数来计算字符串向量的汉明距离

在这种方法下,用户必须应用与上述方法-1和方法-3相同的方法,将向量类型改为字符串。

字符串向量: 字符串向量是一个由若干字符串组成的向量。考虑一个例子,我们给了两个数字向量,vect1 = c(“GeeksforGeeks”, “R”, “C++”, “Java”)和vect2 = c(“Geeks”, “R”, “C”, “Java”),因为只有对应的第一和第三元素不同,因此汉明距离等于二。

语法

sum(vect1 != vect2)

例子

让我们考虑两个字符串向量,vect1 = c(“GeeksforGeeks”, “Java”, “Python”, “C++”, “R”, “Swift”, “PHP”) 和 vect2 = c(“Geeks”, “Java”, “C++”, “R”, “Python”, “Swift”, “C#”)。很明显,对应的第一、第三、第四、第五和第七元素是不同的。因此,汉明距离等于5。

# 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))

输出

[1] "Hamming distance between vect1 and vect2 is equal to 5"

方法6:使用自定义()函数来计算字符串向量的汉明距离

在这个方法中,用户必须遵循上述方法2和方法4中的相同方法,只是将R编程语言中的向量类型改为字符串。

例子

让我们考虑两个字符串向量,vect1 = c(“GeeksforGeeks”, “Java”, “C#”, “C++”, “R”, “PHP”, “Swift”)和vect2 = c(“GeeksforGeeks”, “Python”, “C”, “R”, “Python”, “Swift” “C#”)。很明显,对应的第二、第三、第四、第五、第六和第七元素是不同的。因此,汉明距离等于6。

# 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))

输出

[1] "Hamming distance between vect1 and vect2 is equal to 6"

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程