現在、Rパッケージを構築中です。mypackage
と呼んでいます。私はdevtools::use_vignette("my-vignette")
を使用してパッケージビネットを生成し、コンテンツにmy-vignetteを埋めました。もちろんパッケージビネットなので、このパッケージ自体に含まれている関数とデータの使用法を実証する必要があります。しかし、私はビネットを編むときにパッケージとその内容を読み込む際に問題があります。パッケージ自体のためにビネットにRパッケージをロードする
ビネット内のすべてのコードチャンクは、ローカルコンピュータでエラーなしで実行されます。これは、Rを再起動してワークスペースをクリアした後でも同じです。しかし、私はデベロッパーツール::ビルド()を使用してパッケージをビルドしようとすると、ビルドがで失敗します。
Error in library(mypackage): there is no package called `mypackage` Calls: <Anonymous> ... withCallingHandlers -> withVisible -> eval -> eval -> library Execution halted
devtools::build()
からコンソールの完全な出力は次のようになります。
* checking for file ‘/path/to/mypackage/DESCRIPTION’ ... OK
* preparing ‘mypackage’:
* checking DESCRIPTION meta-information ... OK
* installing the package to build vignettes
* creating vignettes ... ERROR
Quitting from lines 39-44 (my-vignette.Rmd)
Error: processing vignette 'my-vignette.Rmd' failed with diagnostics:
'my_function' is not an exported object from 'namespace:mypackage'
Execution halted
デベロッパーツール: :document()はエラーなく実行されますが、devtools :: build_vignettes()は特定の関数を使用できない別のエラーになります(パッケージ自身をロードできるようです)。
> devtools::build_vignettes()
Building mypackage vignettes
Moving basic-mypackage-vignette.html, basic-mypackage-vignette.R to inst/doc/
Copying basic-mypackage-vignette.Rmd to inst/doc/
> devtools::build()
'/Library/Frameworks/R.framework/Resources/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet CMD build \
'/path/to/mypackage' --no-resave-data --no-manual
* checking for file ‘/path/to/mypackage/DESCRIPTION’ ... OK
* preparing ‘auctestr’:
* checking DESCRIPTION meta-information ... OK
* installing the package to build vignettes
* creating vignettes ... ERROR
Quitting from lines 39-44 (my-vignette.Rmd)
Error: processing vignette 'my-vignette.Rmd' failed with
diagnostics:
could not find function "my_function"
Execution halted
Error: Command failed (1)
> devtools::document()
Updating mypackage documentation
Loading mypackage
パッケージ自体が自分のRライブラリに存在しないためです。私は、開発中にdevtools::load_all()
を使ってそのパッケージをロードしています。パッケージビネットでその機能とデータを使用するために、私はこれを回避してパッケージをロードするにはどうすればよいですか?具体的には、ニットがビネットを編むために使用している環境に、その機能でパッケージを利用できるようにするにはどうすればよいですか?
他のパッケージのビネットが直接library()
を使用してパッケージをロードするのを見たことがあります。例えば、stringrビネットに記載されている。
私は読者が完全に再現可能な例なしでこれを評価できることを願っています。ここで複製や共有が困難な完全なRパッケージのディレクトリ構造が必要なため、例全体を再現するのは困難です。
エクスポートされたビネットで使用している機能はありますか? (つまり、文書に '# '@ export'があります) – sinQueso
ああ、それは本当に問題であるようです(@exportを使わない)。ありがとうございます - あなたのどちらかが答えとして投稿した場合、私はそれを正しいとマークします! – jpgard