3

データセットとデータを使用する R 関数を含む R パッケージを作成しています。R 関数は次のようになります。

myFun <- function(iobs){

            data(MyData)
            return(MyData[iobs,])

           }

通常の「R CMD check myPack」業務を行うと、エラーが発生します

* checking R code for possible problems ... NOTE
myFun: no visible binding for global variable ‘MyData’

この問題を解決する方法はありますか?

4

2 に答える 2

5

これには遅延読み込みを使用できます。

置くだけ

LazyData: yes

あなたのDESCRIPTIONファイルで削除してください

data(MyData)

あなたの機能から。遅延読み込みにより、MyData-Object は名前空間で使用できるようになるため、data() を呼び出す必要はありません。

于 2013-01-09T22:15:49.430 に答える
4

遅延データ アプローチの 2 つの代替方法。listどちらも引数の使用に依存していますdata

data(list = 'MyData')


関数のデフォルトの引数として定義します(変更できるため、理想的ではない場合があります)

myFun <- function(iobs, myData = data(list='MyData')){


  return(myData[iobs,])

}

空の環境にロードしてから、 を使用して抽出し[[ます。

myFun2 <- function(iobs){
  e <- new.env(parent = emptyenv())
  data(list='MyData', envir = e)
  e[['MyData']][iobs,]

}

それ e$MyData[iobs,]も機能するはずです。

drop = TRUEまた、同じクラスを保持するために安全な方法としてMyData 使用 することもお勧めしMyData[iobs,,drop=TRUE]ます。これは、この関数の詳細と の構造を考えると問題にならないかもしれませんがMyData、特にパッケージ内で堅牢なコードが必要な場合は、プログラミングを実践することをお勧めします。

于 2013-01-09T23:14:38.907 に答える