15

作成中のパッケージ内の関数内で (ルックアップ テーブルとして) データ セットを使用する必要がある場合、関数内でデータ セットを明示的に読み込む必要がありますか?

関数とデータセットはどちらも私のパッケージの一部です。

これは、関数内でそのデータセットを使用する正しい方法ですか:

foo <- function(x){
    x <- dataset_in_question
}

それともこれが良いですか:

foo <- function(x){
    x <- data(dataset_in_question)
}

または、私が考えていないアプローチが正しいですか?

4

3 に答える 3

12

R-develに関するこのトピック(パッケージ開発のコンテキストで)に関する最近の議論があり、その多くのポイントがこの質問に関連しています:

  1. あなたが提供するオプションだけがあなたの例に当てはまる場合、R自身(すなわち、Brian Ripley)はあなたに次のように指示します。

    foo <- function(x){
       data("dataset_in_question")
    }
    
  2. ただし、このアプローチでは、R CMDチェックでNOTEがスローされます。これは、John Chambersによって追加されglobalVariables()た関数を使用することで、Rの今後のバージョン(または現在のR開発)で回避できます。

  3. 「正しい」アプローチ(つまり、BrianRipleyとPeterDalgaardによって提唱されたアプローチパッケージにLazyDataオプションを使用することです。「R拡張機能の記述」のこのセクションを参照してください。

ところで:私はあなたの最初のアプローチがどのように機能するべきかを完全には理解していません。何をすべきx <- dataset_in_questionですか?dataset_in_questionグローバル変数または以前に定義されていますか?

于 2012-05-08T07:30:18.563 に答える
1

私にとっては、 NOTE を取り除くためにファイル内でget()追加で使用する必要がありました ( @Henrikポイント 3 の postig を参照) 。私のRバージョンは.LazyData: trueDESCRIPTIONno visible binding for global variable ...3.2.3

foo <- function(x){
    get("dataset_in_question")
}

したがって、LazyData は(を使用せずに)dataset_in_question直接アクセス可能になり、満足することですdata("dataset_in_question", envir = environment())get()R CMD check

HTH

于 2016-01-20T15:54:14.747 に答える