【发布时间】:2018-08-19 13:36:44
【问题描述】:
我需要计算输入字符串和大字符串数据集之间的汉明距离。 (数据集中所有字符串的长度与输入字符串的长度相同。)
例如,如果
input <- "YNYYEY"
dataset <- c("YNYYEE", "YNYYYY", "YNENEN", "YNYYEY")
input 和dataset 中的每个字符串之间的汉明距离是 1、1、3、0,所以最小值是 0。我写了一个函数来计算两个字符串之间的汉明距离:
HD <- function(str1, str2){
str1 <- as.character(str1)
str2 <- as.character(str2)
length.str1 <- nchar(str1)
length.str2 <- nchar(str2)
string.temp1 <- c()
for (i in 1:length.str1){
string.temp1[i] = substr(str1, start=i, stop=i)
}
string.temp2 <- c()
for (i in 1:length.str2){
string.temp2[i] = substr(str2, start=i, stop=i)
}
return(sum(string.temp1 != string.temp2))
}
但是数据集太大了,所以我需要加快速度,您知道我可以快速完成吗?感谢您的帮助。
【问题讨论】:
标签: r string performance vectorization hamming-distance