1

最近、R拡張機能を作成しました。関数はパッケージに含まれているデータを使用するため、それらをロードする必要があります。サブルーチンもデータにアクセスする必要があります。

これが採用されたアプローチです:

main<- function(...){
    data(data)
    sub <- function(...,data=data){...}
...
}

データが存在するという事実に不満がある.GlobalEnvため、関数が終了したときにデータがまだハングします(引数の概念によるダウンパスも損なわれます)。

私を正しい軌道に乗せてください!package-functionsでpackage-dataを処理する必要がある場合、どのように環境を使用しますか?

4

2 に答える 2

3

LazyDataネームスペースでディレクティブを探しているようです。

LazyData: yes

それ以外の場合dataは、envirデータをロードする環境を制御するために使用できる引数があります。たとえば、データを内部にロードする場合mainは、次を使用できます。

main<- function(...){
    data(data, envir = environment() )
    sub <- function(...,data=data){...}
    ...
}
于 2012-11-14T11:51:23.730 に答える
3

パッケージのユーザーではなく、関数にデータが必要な場合はsysdata.rda、Rディレクトリにあるというファイルに保存する必要があります。

R拡張機能から:

2つの例外が許可されます。Rサブディレクトリにファイルsysdata.rda(Rオブジェクトの保存されたイメージ:tools :: resaveRdaFilesで提案されている適切な圧縮を使用してください)が含まれている場合、これは名前空間/パッケージ環境に遅延ロードされます–これはデータを介してユーザーがアクセスできるように意図されていないシステムデータセットを対象としています。

于 2012-11-14T14:18:22.363 に答える