2011-03-10 100 views
20

我對此有點困惑。我有一個R程序包,它具有一個小函數(不是程序包的市長部分),其中調用了psych程序包的principal函數。我如何在DESCRIPTION和NAMESPACE中正確指定它?如何正確使用R包中其他包的功能

DESCRIPTION中的設置Depends: psych確保每次加載我的包時都會加載心理包。這是有效的,但對於我的軟件包的這麼一小部分來說似乎是多餘的。

設置Suggests: psych和進入功能的require("psych")就是我現在做的,但是這不一樣,如果沒有安裝psych工作,似乎是這樣做的錯誤的方式(寫R附加說,建議主要是指舉些例子)。

我想我需要導入該函數。我試着在DESCRIPTION中設置Imports: psych,在NAMESPACE中設置爲importFrom(psych,"principal")。這可以工作,但是在沒有安裝心靈軟件的計算機上,加載我的軟件包時會出現錯誤。

+2

不要打擾,'psych'是一個很好的包,我相信你會發現它在某些時候很有用(它有很多幫助函數),儘管你只需要一個函數。祝PCA/FA好運! =) – aL3xa 2011-03-10 14:40:37

回答

18

您需要回答的基本問題是:「您是否希望該功能可供包所有用戶使用,而無需進一步努力?」。如果是,則使用導入+相應的名稱空間聲明,如果不是,則使用建議並打印信息錯誤消息,如果require("psych")返回FALSE

我不明白你的進口相關投訴:「但是在沒有安裝心靈的計算機上,它會在加載我的軟件包時出錯。這也是如果你的軟件包在取決於!

+0

謝謝,非常明確,我認爲建議是最合適的。我認爲我在導入時犯了一個愚蠢的錯誤,我認爲只有在從CRAN安裝軟件包時纔會安裝依賴的軟件包,但我想這也會在導入的軟件包中出現? (僅通過從zip文件安裝來測試它) – 2011-03-10 16:49:28

+0

是的,導入的軟件包在安裝軟件包時會自動下載。 – hadley 2011-03-10 17:32:05

+0

那麼爲什麼我們需要'importFrom'呢? S4是否具體? – mlt 2012-10-22 20:09:37

相關問題