打包 R 的若干个问题

当运行 devtools::check() 的时候,出现了一些 notes ,本来也是无所谓的,不影响程序运行,但是上传到 CRAN 的时候,CRAN 是不允许出现 notes 的。

第一个问题:

checking DESCRIPTION meta-information ... NOTE
Malformed Description field: should contain one or more complete sentences.

这里的 DESCRIPTION 并不是指 DESCRIPTION 这个文件, 而是在 DESCRIPTION 文件里的字段 Description ,提示不是一个完整的句子,(真的服了呀,就不能写成 Description 吗?),所以只要在 Description 的那个字段的值的最后加上一个句点(.)就行了。

第二个问题:

Undefined global functions or variables:
  new
Consider adding
  importFrom("methods", "new")
to your NAMESPACE file (and ensure that your DESCRIPTION Imports field

R 语言有多种面向对象类型,比如 S4,RC,R6,我用的是 RC 类型,需要导入 methods 包里面的 new 方法,提示也蛮直观的, 在 NAMESPACE 文件加上 importFrom("methods", "new"),但是 NAMESPACE 文件是 roxygen2 自动生成的,并不能手动修改,而 roxygen2 是提取注释动态生成 NAMESPACE 文件的,所以需要在类定义之前加上注释:

#'
#' @importFrom methods new 
#' @field app_id app id.
#' @field secret_key app secret key.

然后在 DESCRIPTION 文件里导入 methods 包

Imports:
    httr,
    jsonlite,
    digest,
    readr,
    methods

第三个问题:

File
  LICENSE
is not mentioned in the DESCRIPTION file.

在包里添加了一个 LICENSE 文件,主要用于 Github 的,在 DESCRIPTION 文件里申明了 License: GPL-3,文件的 LICENSE 也要包含到 DESCRIPTION 文件里,所以需要修改为: License: GPL-3 + file LICENSE 或者 License: GPL-3 | file LICENSE