有没有办法在DESCRIPTION文件中自动生成`Imports`部分?

时间:2016-05-16 21:51:49

标签: r r-package

在开发R包时,我常常打开Packrat并使用本地化的存储库,并在我在会话中探索时进行开发。但是在发布软件包时,召回并手动添加我在开发包中使用的每个依赖项都是一件非常令人头疼的事。有(半)自动方式吗?

例如,在NodeJS开发中,我们可以使用npm install --save,并且依赖项将自动添加到package.json

2 个答案:

答案 0 :(得分:4)

是的,使用roxygen2生成您的create view MyTableEx As SELECT Every, Other, Column FROM MyTable 文件。

生成包级别文档的示例方法:

NAMESPACE

注意:我倾向于在包级文档中保留我的import语句。您可以在函数文档中使用这些相同的语句。

使用#' @details #' \tabular{ll}{ #' Package: \tab \cr #' Type: \tab Package\cr #' Version: \tab 1.0.0\cr #' Date: \tab 2016-05-15\cr #' License: \tab MIT \cr #' } #' @useDynLib pkg #' @importFrom Rcpp evalCpp #' @importFrom methods is #' @importFrom stats ts as.ts is.ts #' @import ggplot2 "_PACKAGE" 进行特定导入。

否则,对给定包中的所有函数使用@importFrom <pkg> <function1> <function2>

修改

要将其锁定到特定版本,您需要修改@import <pkg>文件的DESCRIPTION部分,如下所示:

Imports:

答案 1 :(得分:3)

执行此操作的常用方法(虽然不是“老派”R程序员使用的很多,据我所知,他们手工维护他们的V文件...)是手动插入roxygen2 {代码中的{1}}语句...例如

NAMESPACE

虽然拥有一个自动化系统肯定会有所帮助,但如果没有别的话,就提供提示。当然以这种方式维护依赖关系(确保根据需要为每个具有依赖关系的函数添加@importFrom语句)比在之后跟踪(仍然)需要的依赖关系更好开发代码。

  • # returns a true family() object iff one was given ## to glmmTMB() in the first place .... ##' @importFrom stats family ##' @export family.glmmTMB <- function(object, ...) { object$modelInfo$family } @importFrom(转换为@import@importFrom语句)都是合法的,R extensions guide
      

    有选择地使用importFrom而不是导入是一种很好的做法,特别推荐从具有十几个导出的软件包导入时。

(“良好做法”翻译为“CRAN维护者如果不这样做就会大喊”......)

  • 我不知道是否有办法进行版本化import语句:R将包版本依赖项放在importFrom文件和importFrom语句的Imports:字段中在DESCRIPTION文件中:roxygen2会自动生成此信息,但我认为从roxygen2指令到importFrom / NAMESPACE信息的映射不够精细,足以支持这一点......
  • 运行NAMESPACE会提供有关需要导入的推荐软件包的功能的提示。