たとえば、最小限の作業例として、次のパッケージをビルドしたとしますTest
。
# In R\Test.R :
#' @import methods
#' @exportClass C
C <- setClass("C")
そして今、私は次のように変更setClass
しsetRefClass
ます:
C <- setRefClass("C")
(RStudioで)「ビルドとリロード」を実行すると、エラーが発生します
==> roxygenize('.', roclets=c('rd', 'collate', 'namespace'))
* checking for changes ... ERROR
Error in getRefClass(class) :
class �C� is defined but is not a reference class
もちろん、まだリファレンス クラスではありませんが、更新されたパッケージではリファレンス クラスになります。古いクラス定義をチェックしても、奇妙な警告が表示されます。
> getClass("C")
Virtual Class "C" [package "Test"]
No Slots, prototype of class "NULL"
Warning message:
In .recacheSubclasses(def@className, def, doSubclasses, env) :
undefined subclass "C" of class "refObject"; definition not updated
Roxygen は私の新しい定義を無視しているようC
で、古いクラス定義はまだ有効です。Roxygen を新しい定義に集中させ、再構築を成功させるにはどうすればよいですか?
(この問題は特定のものではないことに注意してくださいsetClass
。例として使用しているだけです。)
私のセットアップ:
再構築する前に RStudio で Roxygen をセットアップして実行し、@export
s etc が変更された場合に NAMESPACE ファイルが自動的に更新されるようにします。
- Roxygen2 3.0.0
- roxygen を使用して生成します (RStudio で):
- Rd ファイル
- 照合フィールド
- 名前空間ファイル
- 実行時に自動的に roxygenising (RStudio で):
- R CMD チェック
- ソースおよびバイナリ パッケージのビルド
- ビルド&リロード
- roxygen を使用して生成します (RStudio で):
- R: 3.0.2 (フリスビーセーリング)
- IDE: RStudio 0.98.490
- OS: Windows 8.1