9

Rでパッケージを作成しようとしています。ここでは、多くの新しいカスタムクラスを作成しました。各クラスは異なるファイルにあります。クラスは親クラスから継承し、他のクラスに継承します。

私のコードを実行している間、私はそれらのそれぞれをこのように呼び出します

source("package/father.R")
source("package/son.R")
source("package/grandson.R")     

Sonクラスで定義された孫クラスに必要ないくつかのメソッドの定義。package.skeleton()を使用してそれぞれを呼び出し、パッケージを作成しましたが、正常に機能しているようです。ただし、R CMDチェックを実行すると(およびRにインストールしようとすると)、関数がファイルをアルファベット順に呼び出そうとするため、エラーがスローされます。そのため、ファイルgrandson.Rがson.Rの前に呼び出され、エラーが表示されます。メソッドが定義されていないこと。名前をzgrandson.Rに変更すると、Rはそのファイルを最後に呼び出し、すべてが正常に機能しているように見えますが、これは明らかに問題の解決策ではありません。

パッケージを作成するためのチュートリアルを読んだことがありますが、それらはすべて、Rに継承/他のファイルの呼び出しがない単純なケースを扱っているようです。

4

1 に答える 1

6

私が理解している限り、ファイルCollate内のフィールドを使用してこれを制御できます。DESCRIPTION

Writing R Extensionsマニュアルからの引用:

'Collat​​e'フィールドは、パッケージのインストールのために処理されるときに、パッケージ内のRコードファイルの照合順序を制御するために使用できます。デフォルトでは、「C」ロケールに従って照合します。存在する場合、collat​​e仕様は、パッケージ内のすべてのRコードファイル(可能なOS固有のサブディレクトリを考慮に入れて、パッケージサブディレクトリを参照)を、Rサブディレクトリに相対的なファイルパスの空白で区切られたリストとしてリストする必要があります。空白または引用符を含むパスは引用符で囲む必要があります。「Collat​​e」の代わりに、OS固有の照合フィールド(「Collat​​e.unix」または「Collat​​e.windows」)が使用されます。

したがって、次のように指定できます。

Collate:
  father.r
  son.R
  grandson.r

または、質問で示したように、辞書式順序で正しい照合順序が得られるように、ファイルの名前を変更するだけです。


しかし、同様の質問については、@DirkEddelbuettelによるこの回答も参照してください。

于 2012-09-07T06:08:12.453 に答える