私は、様々な生物工学注釈データパッケージを使用するRパッケージを作成しています。特定のデータパッケージはユースケースによって異なります。そのため、私はこのような何かを行う機能を持っている:オンザフライでデータパッケージを取得するために 'require'パッケージコードを使用するR
if (!require(biocpack_name, character.only=T)) {
source("https://bioconductor.org/biocLite.R")
BiocInstaller::biocLite(biocpack_name)
require(biocpack_name , character.only=T)
}
biocpack_nameは、分析される特定のデータに基づいて検索され〜30 +注釈データパッケージのいくつかのことができます。そのため、私はそれぞれを「Suggests」に追加する必要はありません(エラーはパッケージではなく、パッケージを指定する文字列であるため、動作するかどうかはわかりません)。 R CMD CHKから私にこのエラーが表示されます:
'library' or 'require' call not declared from: ‘biocpack_name’
'library' or 'require' call to ‘biocpack_name’ in package code.
どうすればこの問題を回避できますか?
TをTRUEに変更した問題を解決しました。パッケージが1つの関数内にロードされているが別の関数で使用されているので、推奨されているアプローチはうまくいかないだろうか'db'は作成された関数のローカルではないでしょうか? – alexvpickering
はい、あなたの機能がどのように設計されたかを考えなければなりません。上のコードは 'get_db()'と呼ばれ、必要なときに毎回dbシンボルを返します。 –
私は示唆したようにしようとしましたが、エラーを起こしました。例えば、 'biocpack_name < - " hgu95av2.db "'と返されたオブジェクトが 'db'と呼ばれる場合です。次の例では、いくつかのサンプルキーを取得できます: 'keys < - AnnotationDbi :: keys(db)[1:5]'。しかし、AnnotationDbi :: mapIds(db、keys、 "SYMBOL"、keytype = "PROBEID") 'および' AnnotationDbi :: select(db、keys、 "SYMBOL") 'は' object 'hgu95av2ORGPKG' not found'で失敗します。 – alexvpickering