roxygen2会自动为"Imports:"包编写NAMESPACE指令吗?

bri*_*ndk 45 r roxygen roxygen2

tl;我的问题的博士版本

如果我想导入包,是否必须手动将import()指令写入我的NAMESPACE文件?似乎roxygen2对我来说不会神奇地做到这一点,即使我在他的描述中将它们列为"Imports:".

富勒版

这是一个非常愚蠢的问题,但我问,因为答案对我来说并不明显.

roxygen2用来处理我的R包文档.当我想确保导出函数时,我@export在其roxygen块中添加了一个标记.后续运行roxygenize()将相应地编写NAMESPACE指令.

但是,我的包目前正在导入其他几个:

Depends:
    R (>= 2.13.0),
    ggplot2 (>= 0.8.9)
Imports:
    RColorBrewer,
    plyr,
    gridExtra
Run Code Online (Sandbox Code Playgroud)

看来虽然roxygen2 导出的函数重写NAMESPACE指令,但它不会自动重写NAMESPACE以反映我指定的包应该在我的DESCRIPTION中导入.

Ram*_*ath 42

扩展我的注释,如果要自动namespace为包/函数添加指令import,可以通过在函数的文档头中添加@imports package@importFrom package function行来实现roxygen2.

但是,正如@hadley指出的那样,它只会修改NAMESPACE,但不会影响包DESCRIPTION

  • 我现在建议使用`package :: function`,而不是`@importFrom package function`. (5认同)
  • 所以你的意思是`@import package :: function`? (4认同)
  • @pete在roxygen2标题中是`@ import`; 它是NAMESPACE中的`import()`; 这是描述中的"进口:" (4认同)
  • @Ramnath从这里的底部(http://cran.r-project.org/web/packages/roxygen2/vignettes/namespace.html)看来,如果你打算使用@import,你就不需要了. package :: function()`当你调用它时,只要它在`DESCRIPTION`的`Imports:`部分. (2认同)
  • 另外,我忘了你必须调用`document()`来更新NAMESPACE,而不是`load_all()` (2认同)