2014-05-08 57 views
4

我有一個包在Ubuntu 12.04下成功建立並且沒有警告。該軟件包是純粹的R,並具有大約70個功能(大約2000 LOC)。當我嘗試在Rstudio中的Windows 7下構建時,該包成功構建(無警告),但NAMESPACE僅包含十幾個函數的export()。第一次發生在我身上,可能是因爲我很少使用Windows。這發生在3.1和最新版本的Rstudio和roxygen2下。它發生在你身上嗎?這可能是什麼原因?roxygen2沒有正確生成NAMESPACE

+11

最簡單的方法是刪除命名空間文件並讓roxygen創建它。如果它存在,roxygen認爲你自己製造了它,不會欺騙它 – rawr

+1

你有'@出口'所有70個功能嗎? – hadley

+0

+ rawr,我確實嘗試過,並沒有奏效。 + hadley,我導出了大部分函數(可能只有一個沒有導出),並且在Linux中NAMESPACE文件生成得很好。 – gappy

回答

0

我不知道它是否與您的問題有關(我希望自那時起就已經解決了...),但我也遇到了類似的問題,事實證明這是因爲與我笨拙的命名約定。

通常,我寫了函數名爲plot.XXX(),其中XXX描述了應繪製的內容。 Roxygen將它們解釋爲S3對象系統的通用函數定義。然後XXX被認爲是一個帶有plot()函數的(非導出)類,並且相應地寫了NAMESPACE文件,當然這不是我所期望的。我猜想str.XXX(),summary.XXX()等等,或者XXX.data.frame()等等都會發生同樣的情況。我沒有這些,但是如果它確實有意義的話。

爲了解決這個問題,我用功能名稱中的下劃線替換了我的小圓點......並發現了S3/S4/S5的新可能性!