2017-07-04 9 views
1

DBI拡張(RJDBC、RSQLiteなど)を使用してパッケージを開発する場合、どのパッケージを参照する必要がありますか?パッケージ内のDBI関数の参照 - 使用するには?

connect_my_db <- function() DBI::dbConnect(RSQLite::SQLite(), "my_db.sqlite") 

または

connect_my_db <- function() RSQLite::dbConnect(RSQLite::SQLite(), "my_db.sqlite") 

最初の方法ではImportsでDBIを使用するように強制しますので、私は2番目の方法をお勧めします。しかし、他の側で私は仮想関数を呼び出す必要があり、Rは何を呼び出すか決定する。

答えて

1

DBIの仕様は、DBIのメソッドのすべてなので、両方の表記(RSQLite::dbConnect()DBI::dbConnect())は、すべての実用的な目的のために同一の再輸出にすべてのバックエンドを必要としますDBI関数を使用していますが、パッケージにRSQLiteしか使用していない場合は、コード・スタイルの視点からその接頭辞を使用するとよいでしょう。

1

エンドユーザの観点からは、RSQLiteはDBIに依存するため、パッケージにはRSQLiteとDBIの両方をインストールする必要があります。文法的な観点からは、私は最初のアプローチを好むでしょう。そうでなければ、Rのメソッドディスパッチメカニズムを第二に推測しているからです。

identical(DBI::dbConnect, RSQLite::dbConnect) 
#> [1] TRUE 

DBI::表記があることを表している:

関連する問題