2012-11-13 85 views
2

我想刪除一個行的源代碼:從Bioconductor的包「DEXSeq」修改R封裝

if(nrow(mm) <= ncol(mm)) 

如何做到這一點?

+2

如果變化是明智的,那麼詢問'packageDescription('DEXSeq')$ Maintainer',也許在[Bioconductor郵件列表](http://bioconductor.org/help/mailing-list/) ),使其他人可以從中受益(或者作者可以爲您的問題提供更強大的解決方案)。 –

回答

4

R包只是一個包含多個目錄和文件的存檔。您可以隨意修改它們。下載軟件包 - 它將以「.tar.gz」格式結尾。解開它;在許多系統中,以下(命令行)將工作:

tar xzf package.tar.gz 

,或者如果你有包(package.zip)的拉鍊Windows版本,只需將其解壓縮。

輸入創建的目錄,進入目錄「R」,並找到包含函數的文件:

cd package 
cd R 
grep "if(nrow(mm) <= ncol(mm))" *.R 

編輯它,並再次重新包裝包裝:

cd ../.. 
tar czf package_mine.tar.gz 

或,在Windows中,將目錄壓回package.zip表單。

您可以立即安裝和使用package_mine。

這不是唯一的方法,並且正常情況下應該使用R重建包。但是,對於小的修改並快速嘗試它將要做的事情。

+0

或者你可以讓生活變得簡單並使用devtools。一直以來都有寫這篇教程的意思,但它基本上是下載源文件,編輯文件'load_all()'。 – Spacedman

+3

嗯,是的,你是對的,但是定義「簡單生活」。學習一些新的技巧不僅需要花費一些時間與他們在一起,而且還要在半年後再次記住他們。使用tar,vim和標準軟件包工具修改軟件包只需要您每天使用的這些工具。 – January

+0

而你每天不使用devtools的原因是......?可能是因爲你認爲它只適合製作軟件包,但事實並非如此。您可以使用它來管理任何工作區 - 只需將所有R源放在一個名爲'R'的文件夾中,並使用'load_all()'而不是記住找出已更改的東西並弄亂工作空間。真。這是一件好事。 – Spacedman