[英]How do I calculate the hamming distance in R on a set of binary values?
我需要計算漢明距離並將它們繪制在R中的簇中,以獲得具有2列和45,000+行的數據集。 有沒有知名的圖書館? 或者建議任何策略強於其他策略?
我嘗試了包“e1071”中的hamming.distance函數,並得到以下錯誤。 但即使我弄清楚如何計算漢明距離,我也不確定如何從這些結果轉換為聚類圖?
Error: evaluation nested too deeply: infinite recursion/options(expressions=)?
2015-02-02 18:50:59.704 R[1162:679616] Communications error: <OS_xpc_error<error: 0x7fff7aaadb60> { count = 1, contents =
"XPCErrorDescription" => <string: 0x7fff7aaadfa8> { length = 22, contents = "Connection interrupted" }
我試過這段代碼:
H<-hamming.distance(df)
df看起來像這樣:
Name Code
name1 0
name2 0
name3 1
name4 1
name5 0
感謝您查看此問題,非常感謝任何幫助。
要將每個行值與上一個行值進行比較,請創建一個新列,該列是上一行,並在兩列中應用此函數。
df = data.frame(x1=as.character(c("0", "0", "1")))
df$x2 = c(NA, df$x1[-1])
hamming.distance = function(string1, string2){
if (is.na(string2)==T) {
return (NULL)
}
string1 = as.character(string1)
string2 = as.character(string2)
length.string1 = nchar(string1)
length.string2 = nchar(string2)
if (length.string1 != length.string2) warning("Inputs must be of equal length")
string.temp1 = c()
for (i in 1:length.string1){
string.temp1[i] = substr(string1, start=i, stop=i)
}
string.temp2 = c()
for (i in 1:length.string2){
string.temp2[i] = substr(string2, start=i, stop=i)
}
return(sum(string.temp1 != string.temp2))
}
results = mapply(hamming.distance, df[,1], df[,2])
unlist(results)
注意: unlist(results)
長度將比df
對象中的行數短1,因為第一個條目是NA, unlist
刪除該值。
您可以使用stringdist包來計算漢明距離: http ://cran.r-project.org/web/packages/stringdist/stringdist.pdf
例如:
library(stringdist)
df <- data.frame( column1 = c("toned", "10112"), column2 = c("roses", "10223"))
stringdistmatrix(df$column1, df$column2, method = c("hamming"))#for distance matrix
stringdist(df$column1, df$column2, method = c("hamming"))#for vector of distance
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.