2016-01-22 121 views
1

我找不到答案,所以我發佈解決方案以防其他人遇到同樣的問題。limma中的錯誤 - lmFit - chol2inv:'x'必須是一個方形數字矩陣

使用Bioconductor的距離的LIMMA包,我有以下錯誤:

> fit <- try(lmFit(matrix, design)) 
Error in chol2inv(fit$qr$qr, size = fit$qr$rank) : 
    'x' must be a square numeric matrix 

不是一個非常有用的錯誤消息,但問題是簡單的。你的「矩陣」的rownames不能有任何重複。請選擇

any(duplicated(rownames(matrix))) 

並在必要時重命名行。

+0

這是一個很好的建議,但rowname重複檢查並不能解決我得到的非常類似的錯誤。 – DirtStats

+0

@DStStats如果您想解決您的問題,請提供錯誤信息和可重複的代碼片段,以便其他人可以幫助您! – sssheridan

+0

謝謝@sssheridan。我用類似的錯誤解決了我的問題。我只是發表該評論,所以其他人會知道上面提到的錯誤也可能有其他來源。 – DirtStats

回答

1

你的「矩陣」的rownames不能有任何重複。請選擇

any(duplicated(rownames(matrix))) 

並在必要時重命名行。

0

limma包lmFit()函數確實會對基數chol2inv函數做幾個調用。

在我的Windows R3.2.5環境中更新了一些軟件包後,在將矩陣對象傳遞給lmFit()函數時,在我身上發生了類似的錯誤。安裝R版本3.3.1(再次在Windows操作系統下)確實解決了這個問題:將矩陣對象傳遞給lmFit()(Limma 3.26.9)確實返回了MArrayLM對象,沒有發現chol2inv函數的「抱怨」。

升級到R 3.3.1「您的頭髮中的Bug」可能有望解決其他lmFit()問題。

相關問題