0
我正在嘗試做一些分組並遇到此錯誤。「樹」的「高度」組件未排序在cutree中的錯誤
Evaluation error: the 'height' component of 'tree' is not sorted (increasingly).
我輸入的是:
library(stringdist)
name <- c("luke,abcdef","luke,abcdeh","luke,abcdeg")
a<-stringdistmatrix(name, method="jw")
clusts <- hclust(a, method="ward.D2")
但是,當我試圖削減它,它給了我一個錯誤:
> cutree(clusts, h = 0.155)
Error in cutree(clusts, h = 0.155) :
the 'height' component of 'tree' is not sorted (increasingly)
但是,如果使用
a<-stringdistmatrix(name, method="jw", p=0.05)
曾經一切正常。
我找了一個解決方案,找不到一個。 我應該怎麼做,以防止這種情況發生並保持其正常工作?
我也注意到,如果我有相同的距離矩陣,而是用手工生成的(所以在集羣中沒有距離參數。
如果你看看'diff(clusts $ height)'這兩個例子,那麼第一個就是一個微小的負數,第二個恰好爲零。基本上問題是,在這種簡單的情況下,所有的距離都是相同的,但由於二進制表示的十進制數不完美,因此存在小的舍入差異。我不認爲你會用更多不同的字符串來解決這個問題。 –
所以這是一個特定的問題,是隨機發生的,因爲我不走運,可以這麼說嗎?問題是,即使這些名稱不是我的實際名稱,這些名稱和我的實際名稱之間的距離也是相同的(因爲某種原因選擇了它們)。有沒有辦法讓它自動工作?因爲我需要我的算法來處理所有情況,即使是這些不幸的情況也是如此。所以,如果我保留這些相同的字符串,我可以做任何事情嗎? – Ravonrip
你可以嘗試計算clusts後四捨五入 - 試試'clusts $ height < - round(clusts $ height,6)' –