Devtools: @importFromが変更されても、名前空間は古い情報を削除しません

作成日 2014年01月03日  ·  8コメント  ·  ソース: r-lib/devtools

2つのパッケージを管理していて、それらをfoobarと呼びます。 barは関数baz $をエクスポートし、 foo@importFromを使用してhelp.Rファイルにインポートします。つまり、foo / R /help.Rにあります。行<strong i="11">@importFrom</strong> bar bazdocumentの場合、名前空間ファイルは正しく作成されるため、 importFrom(bar,baz)なります。

ここで、 barパッケージでbaz bashに変更するとします。 foo / R / help.Rを<strong i="19">@importFrom</strong> bar bashに更新します。 documentの場合、名前空間はimportFrom(bar,bash)を正しく追加しますが、 importFrom(bar,baz)は削除されないため、 installを実行するとエラーが発生します。

私はこれもきれいになると考えてclean = TRUE引数を使用していますが、それはmanファイルにのみ当てはまるようです。 私はここで何かが欠けていますか? それともこれはバグですか?

ありがとう!

最も参考になるコメント

名前空間ファイルを削除し、load_all()を実行してから、devtools :: document()を実行します。 それは仕事をするはずです。

全てのコメント8件

最新バージョンのroxygen2を使用していますか? NAMESPACEファイルを毎回最初から再作成する必要があります。

はい、roxygen2v3.0.0を使用しています

sessionInfo()
Rバージョン3.0.2(2013-09-25)
プラットフォーム:x86_64-apple-darwin10.8.0(64ビット)

ロケール:
[1] en_US.UTF-8 / en_US.UTF-8 / en_US.UTF-8 / C / en_US.UTF-8 / en_US.UTF-8

添付の基本パッケージ:
[1]統計グラフィックデータセットgrDevicesutilsメソッドベース

その他の付属パッケージ:
[1] plyr_1.8..。
extrafont_0.15
[25] roxygen2_3.0.0 testthat_0.7.1
[27] devtools_1.4.1

名前空間を介してロードされます(接続されていません):
[1] biglm_0.9-1 boot_1.3-9 brew_1.0-6 cluster_1.14.4 codetools_0.2-8
[6] colorspace_1.2-4 corrplot_0.73 data.table_1.8.10 dichromat_2.0-0digest_0.6.4
[11] Evaluation_0.5.1 extrafontdb_1.0 formatR_0.10 Formula_1.1-1 ggplot2_0.9.3.1
[16] gmp_0.5-11 grid_3.0.2 gtable_0.1.2 Hmisc_3.13-0 httr_0.2
[21] knitr_1.5labeling_0.2lattice_0.20-24 lubridate_1.3.3 MASS_7.3-29
[26] memoise_0.1 munsell_0.4.2 parallel_3.0.2 proto_0.3-10 R.cache_0.9.0
[31] R.methodsS3_1.5.2 R.oo_1.15.8 R.utils_1.28.4 RColorBrewer_1.0-5 RCurl_1.95-4.1
[36] reshape2_1.2.2 rjson_0.2.13 Rttf2pt1_1.2 scales_0.2.3 splines_3.0.2
[41] stringr_0.6.2 Survival_2.37-4 tools_3.0.2 whisker_0.3-2 xtable_1.7-1

<strong i="5">@importFrom</strong> x yがないのですか?

明らかなことは何もありませんが、私はそれを予期しないところに何かが残っているに違いないようです。 私は検索を続けます。 ご迷惑をおかけして申し訳ありません。

@importFromに関連するエラーを生成するMWEを作成できたため、この問題を再開します(ただし、元の投稿に完全に関連するかどうかはわかりません)。

ベアボーンファイルを使用してスケルトンパッケージを作成し、 help.Rファイルのみを編集しました。これは非常に簡単です。

#' <strong i="9">@docType</strong> package
#'
#' <strong i="10">@importFrom</strong> plyr ddply
NULL

document(package_directory, clean = TRUE)package_directoryはパッケージへのパスを保持する変数)を呼び出すと、すべてが正常に機能します。 ここで、 help.Rを次のように変更します。

#' <strong i="17">@docType</strong> package
#'
#' <strong i="18">@importFrom</strong> plyr
NULL

予想どおり、 document(package_directory, clean = TRUE)を呼び出すと、エラーが発生します。

Error in asChar(ivars) : 
  empty name in directive 'importFrom' in 'NAMESPACE' file

さて、戻ってhelp.Rを修正して、元の状態に戻しましょう。

#' <strong i="27">@docType</strong> package
#'
#' <strong i="28">@importFrom</strong> plyr ddply
NULL

document(package_directory, clean = TRUE)を呼び出すと、驚くべきことに、 help.Rを壊したときに発生したエラーが発生します。 documentNAMESPACEファイルを無視するので、ここでは問題なく機能すると思いました。

さらにひねりを加えたのは、物事を壊した後にdocumentを使用する代わりに、 roxygenizeを使用すると、正常に機能することです。

roxygenのドキュメントによると、「単純なパッケージの場合はroxygenise()を使用できますが、より複雑な場合はdocument()を使用することをお勧めします。」 では、なぜdocumentはここでは機能しないのに、 roxygenizeは機能するのでしょうか。 そして、それぞれをいつ使用する必要がありますか?

バージョンに関しては、私は最新です:

> sessionInfo()
R version 3.0.3 (2014-03-06)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  datasets  grDevices utils     methods   base     

other attached packages:
[1] plyr_1.8.1     extrafont_0.16 roxygen2_3.1.0 testthat_0.8.1 devtools_1.4.1

ああ、問題は、パッケージをロードするためにdocument()が最初にload_all()を実行する必要があることです。名前空間を壊すと、それをロードする方法がありません。 このシナリオでは、通常、gitの変更を元に戻します。

名前空間ファイルを削除し、load_all()を実行してから、devtools :: document()を実行します。 それは仕事をするはずです。

この古い問題は自動的にロックされています。 関連する問題を見つけたと思われる場合は、新しい問題を(reprexを使用して)提出し、この問題にリンクしてください。 https://reprex.tidyverse.org/

このページは役に立ちましたか?
0 / 5 - 0 評価