【问题标题】:Error during build and reload in R在 R 中构建和重新加载期间出错
【发布时间】:2016-01-12 12:20:37
【问题描述】:

我正在对我在 R 中制作的包进行 roxygenizing。

脚本是

#' HandyTools
#'
#' Check if required packages are installed or not and installs them if not
#' @param packageList - a list containing the required package names
#'
#' @examples
#' checkPackagesLibrary(c("lme4","epitools","roxygen2"))
#'
#' @export
library(devtools)
checkPackagesLibrary <- function(packagesList){
  new.packages <- packagesList[!(packagesList %in% installed.packages(lib.loc="/data/legacy/user/R_Packages")[,"Package"])]
  if(length(new.packages))
    install.packages(new.packages, lib = "/data/legacy/user/R_Packages")
  else
    print("Required packages are already installed")
}

在 RStudio 中构建和重新加载时,错误是:

==> devtools::document(roclets=c('rd', 'collate', 'namespace', 'vignette'))

Updating HandyTools documentation
Loading HandyTools
Error: Missing name at code.R:14
In addition: Warning message:
In setup_ns_exports(pkg, export_all) :
  Objects listed as exports, but not present in namespace: c
Execution halted

Exited with status 1.

错误在第 14 行,即

library(devtools)

如果我评论这一行,错误就会消失。

【问题讨论】:

    标签: r roxygen2 r-package


    【解决方案1】:

    新手错误:您不应该在包中的脚本中调用library()...

    改用DESCRIPTIONNAMESPACE,最好通过Imports:importFrom() 语句。

    【讨论】:

    • 对于新手:而不是使用库(包),在包中最好用 :: 来完全指定包的每次使用,例如 data.table::uniqueN
    • @PeterVermont 当我们多次调用另一个包中的函数时,标准做法是什么。写dplyr:: 一百次真的弄脏了代码。我用Imports: 指定它需要的包。似乎 SOP 仍然在开头包含package::,但我真的不想这样做。
    猜你喜欢
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 2013-04-20
    • 2018-12-30
    相关资源
    最近更新 更多