2013-02-08 35 views
3

假設我目前正在開發一個名爲mypackage的軟件包。隨着時間的推移,許多不同的功能落在那裏,我想重新組織它。所以我想要創建一個名爲newpackage的新包,其中我將移動mypackage的某些功能(並在後面添加新功能)。將R軟件包拆分爲兩個軟件包而不會中斷用戶

問題是我不希望mypackage的原始用戶在想要使用其中一個移動的函數時得到object not found錯誤。

所以,我想過做以下幾點:

  • 創建newpackage和移動功能
  • 加入到mypackage說明文件:Depends: newpackage

因此,當人們將其安裝,升級或者加載mypackage,newpackage也將被安裝或加載,並且所有功能都可用。

你認爲它會起作用,還是會出現一些我不認爲的問題?

謝謝!

+1

想到的一個軟件包是'gregmisc'。閱讀該軟件包的[CRAN清單](http://cran.r-project.org/web/packages/gregmisc/index.html)以瞭解它是如何處理的。這是否符合你的想法? – A5C1D2H2I1M1N2O1R2T1 2013-02-08 15:59:07

+0

@AnandaMahto是的,這幾乎就是我所說的。非常感謝,它證明了'Depends'技巧的作用,並且如果我決定這樣做,它將提供一個模型。 – juba 2013-02-08 16:03:28

回答

2

難道不是因爲它不被推薦從一個包中刪除功能而沒有先標記它們來折舊?!所以,也許你按計劃進行,但在將它們從mypackage中刪除之前,可以先將它們標記爲折舊,然後在下一個版本的包中將它們從它中刪除。在遷移階段,您可以使用包的名稱空間按照您的計劃已經參考newpackage中的函數。

+0

是的,你說得對,使用'.deprecated'和信息性消息肯定會更清潔。 – juba 2013-02-08 14:38:22