2017-07-01 9 views
0

私はHadley's guide to implement a DBI backendに従っています。これは、DBIクラスを継承するS4クラスを作成するように指示します。私のパッケージで利用可能な別のパッケージからS4クラスを作成するには?

DBIクラスを使用できるようにするには、DBIDESCRIPTIONファイルにインポートする必要があります。

しかし、私は明示的に、この問題が消えるlibraryDBIを添付した場合でも、そうした後、私はまだエラーに

Error in reconcilePropertiesAndPrototype(name, slots, prototype, superClasses, : 
    no definition was found for superclass “DBIDriver” in the specification of class “KazamDriver” 

を取得し、もちろん1は、パッケージコードでlibraryを使用しないでください。

マイコード:DESCRIPTIONファイル内

# DBI-backend.R 
setClass("KazamDriver", contains = "DBIDriver") 

# DESCRIPTION 
Imports: 
    DBI (>= 0.3.0), 
    methods 
+0

を意味

新しい[ 'RKazam'パッケージ](https://github.com/rstats-db/RKazam)(定型DBIパッケージ)を見てがあります新しい['DBItest'パッケージ(https://github.com/rstats-db/DBItest)(DBIバックエンド用のテストスイート)?どのDBMSでDBIバックエンドを実装していますか? – krlmlr

+0

はい、私はそのパッケージのチュートリアルに従っていました。私が直面しているバグは、 'NAMESPACE'を変更しないで' devtools :: document() 'になります。したがって、 'DBI'は' @import DBI'を使用していても 'NAMESPACE'を介してインポートされません。したがって、 'devtools :: document()'バグであり、DBI/DBItestのバグではありません。 – Heisenberg

答えて

1

輸入フィールドは、実際には何もインポートされません。ユーザーがパッケージをインストールしたときに、リストされているパッケージがインストールされていることを確認するだけです。

代わりに、NAMESPACEを使用して、他のパッケージまたは関数をパッケージで使用できるようにします。また、NAMESPACEを手動で編集するのではなく、Roxygen2(詳細here)を使用してください。この特定のケースでは、それは

#' @import DBI 
setClass("KazamDriver", contains = "DBIDriver") 
関連する問題