heatmap由于有太多NA無法聚類原因和解決方法

有的時候數據中有NA,可以聚類出來媒抠,但是有的時候就會報一個這樣的錯誤:
“Error in hclustfun(distfun(x)) : NA/NaN/Inf in foreign function call (arg 11)”

為什么會有這個錯誤戒劫,要從heatmap函數調用的計算距離的方法dist()和聚類方法hclust()說起伊脓。

首先創(chuàng)建一個存在NA的數據集,并作出heatmap:

library(gplots)
library()
mat = matrix( rnorm(25), 5, 5)
mat[c(1,6,8,11,15,20,22,24)] = NaN
Colors=rev(brewer.pal(11,"Spectral"))
heatmap.2( mat, col = Colors,
           trace = "none", 
           xlab = "Comparison",
           scale = c("none"),
           na.color="gray", 
           dendrogram = "row", 
           Colv = FALSE )

可以做出來熱圖唱凯,其中灰色部分為NA:


heatmap with NAs

這個數據集是這樣的:


data

heatmap.2默認調用dist()函數計算距離(其他熱圖包基本默認也都是這個函數):


dist

這個數據集存在NA桨仿,但是仍然可以做出來熱圖弧烤,原因就是因為dist()計算的距離中不存在NA,hclust()就仍然可以聚類。

如果我們有一個文件暇昂,里面存在很多NA莺戒,比如構建如下一個數據:

mat = matrix(rnorm(49), 7, 7)
mat = rbind(mat[1:4, ], c(rep(NA,6), 1.2416), mat[5:6, ])
mat[1:2,3:7] <- rep(NA, 10)
data2

計算dist():

dist(mat)

返回:


dist2

這時候去做heatmap,報錯急波,hclust不能聚類:
Error in hclustfun(distr) : 外接函數調用時不能有NA/NaN/Inf(arg11)

這個的可以通過修改distfun參數來解決从铲,從默認的hclust改成我們自己定義的距離,把計算出來NA的距離換掉澄暮,比如可以這樣:

dist_no_na <- function(mat) {
    edist <- dist(mat)
    edist[which(is.na(edist))] <- max(edist, na.rm=TRUE) * 1.1 
    return(edist)
}
heatmap.2( mat, col = Colors,
           trace = "none", 
           xlab = "Comparison",
           scale = c("none"),
           na.color="gray",
           dendrogram = "row", 
           Colv = FALSE,
           distfun=dist_no_na)
heatmap with changed NAs

注意有的有的熱圖函數是不能調整聚類方法的名段。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市泣懊,隨后出現(xiàn)的幾起案子伸辟,更是在濱河造成了極大的恐慌,老刑警劉巖馍刮,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件信夫,死亡現(xiàn)場離奇詭異,居然都是意外死亡卡啰,警方通過查閱死者的電腦和手機静稻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匈辱,“玉大人振湾,你說我怎么就攤上這事⊥隽常” “怎么了押搪?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長浅碾。 經常有香客問我嵌言,道長,這世上最難降的妖魔是什么及穗? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮绵载,結果婚禮上埂陆,老公的妹妹穿的比我還像新娘。我一直安慰自己娃豹,他們只是感情好焚虱,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著懂版,像睡著了一般鹃栽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上躯畴,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天民鼓,我揣著相機與錄音薇芝,去河邊找鬼。 笑死丰嘉,一個胖子當著我的面吹牛夯到,可吹牛的內容都是我干的。 我是一名探鬼主播饮亏,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼耍贾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了路幸?” 一聲冷哼從身側響起荐开,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎简肴,沒想到半個月后晃听,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡着帽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年杂伟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仍翰。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡赫粥,死狀恐怖,靈堂內的尸體忽然破棺而出予借,到底是詐尸還是另有隱情越平,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布灵迫,位于F島的核電站秦叛,受9級特大地震影響,放射性物質發(fā)生泄漏瀑粥。R本人自食惡果不足惜挣跋,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狞换。 院中可真熱鬧避咆,春花似錦、人聲如沸修噪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽黄琼。三九已至樊销,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背围苫。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工裤园, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人够吩。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓比然,卻偏偏與公主長得像,于是被迫代替她去往敵國和親周循。 傳聞我的和親對象是個殘疾皇子强法,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容