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"