12

プロジェクトに import_packages.r というファイルがあり、次のものが含まれています。

#' @import reshape2
#' @import ggplot2
#' @import DESeq2
#' @import geneplotter
#' @import survcomp
#' @import gplots
#' @import pheatmap
#' @import RColorBrewer

これらdevtools:document()のパッケージは NAMESPACE ファイルに表示されず、実際にはインポートされません。私は何か間違ったことをしていますか?

4

1 に答える 1

17

ファイルに指定した行のみが含まれている場合、roxygen2 はそれを無視します。roxygen コードの後に​​、 だけを含む行を追加する必要がありますNULL。したがって、次のように動作するはずです。

#' @import reshape2 ggplot2 DESeq2 geneplotter
#' @import survcomp gplots pheatmap RColorBrewer
NULL

また、1 回の使用で複数のパッケージをインポートする方法を示すために行数を減らしました@import。しかし、roxygen にとっては、パッケージを配布する行数は問題ではありません。

この理由は、roxygen セクションが何らかの R オブジェクトに関連付けられている必要があるためだと思います。たとえば、関数のドキュメントは、対応する関数オブジェクトに関連付けられています。インポートを関数に関連付けたくないのでNULL、R オブジェクトでもある に関連付けることができます。

hadley正しく指摘しているように、名前の競合が発生する可能性があるため、多くのパッケージを完全にインポートすることはお勧めしません。通常は、次の 2 つの方法が適しています。

  • 明示的なパッケージ名と::演算子を使用して関数を参照します。reshape2::melt()これには、関数がどのパッケージから来ているかがすぐにわかる追加の利点があります。

  • を使用してパッケージから必要な関数のみをインポートします@importFrom

    #' @importFrom reshape2 melt cast
    

詳細については、こちらをご覧ください。

于 2016-03-02T16:02:57.407 に答える