R CMD 检查 - 包可以安装但不能加载

标签 r devtools roxygen2 r-package

我创建了一个名为 letstrythis 的测试包来说明问题。测试包非常简单,由以下文件组成:

  • 描述

    Package: letstrythis
    Title: What the Package Does (one line, title case)
    Version: 0.0.0.9000
    Authors@R: person("Mike", "Smith", email = "Mike.Smith@anything.com", role = c("aut", "cre"))
    Description: letstrythis is great.
    Depends:
        R (>= 3.2.3)
    License: GPL
    LazyData: true
    Maintainer: 'Mike Smith' <Mike.Smith@anything.com>
    RoxygenNote: 5.0.1
    
  • 命名空间

    # Generated by roxygen2: do not edit by hand
    export(add_numbers)
    
  • R/add-numbers.R

    #' test function
    #'
    #' @param x numeric
    #' @param y numeric
    #' @return numeric
    #' @export
    #'
    #' @examples
    #' add_numbers(1, 1)
    #' add_numbers(2, 3)
    
    
    add_numbers <- function(x, y) {
      x + y
    }
    

  • man/add_numbers.Rd

由 roxygen2 自动创建。

每次我使用 devtools::check() 检查我的包时,我都会收到以下错误消息:

* checking examples ... ERROR
Running examples in 'letstrythis-Ex.R' failed
The error occurred in:

R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> pkgname <- "letstrythis"
> source(file.path(R.home("share"), "R", "examples-header.R"))
> options(warn = 1)
> options(pager = "console")
> base::assign(".ExTimings", "letstrythis-Ex.timings", pos = 'CheckExEnv')
> base::cat("name\tuser\tsystem\telapsed\n", file=base::get(".ExTimings", pos = 'CheckExEnv'))
> base::assign(".format_ptime",
+ function(x) {
+   if(!is.na(x[4L])) x[1L] <- x[1L] + x[4L]
+   if(!is.na(x[5L])) x[2L] <- x[2L] + x[5L]
+   options(OutDec = '.')
+   format(x[1L:3L], digits = 7L)
+ },
+ pos = 'CheckExEnv')
> 
> ### * </HEADER>
> library('letstrythis')
Error in library("letstrythis") : 
  there is no package called 'letstrythis'
Execution halted
* checking PDF version of manual ... OK
* DONE
Status: 1 ERROR

See
  'Z:/R_codes/letstrythis.Rcheck/00check.log'
for details.

Error: Command failed (1)
Execution halted

Exited with status 1.

显然,每次执行 R/add-numbers.R 中的示例时,都无法使用 library() 加载包。

最佳答案

在调用 library() 时设置库位置会有所帮助。在编写将要发布的一般示例时,这可能不是理想的解决方案。对我来说,它在 devtools::check() 期间运行测试时很有帮助。我在网络驱动器上工作时遇到了同样的问题,即 tests/testthat.R 中指定的包无法通过 library() 加载。我没有将正在开发的整个包复制到本地驱动器,而是使用了命令

library(package_under_dev, lib.loc = "..")

tests/testthat.R 文件中。该命令将从当前工作目录的根目录加载包。这在 devtools::check() 期间很有用,因为它将使 R 使用位于临时 package_under_dev.Rcheck 文件夹中的干净包,该文件夹是在检查例程期间创建的。

或者,也可以通过

将根文件夹添加到搜索路径
.libPaths(c("..", .libPaths()))

然后不需要在调用 library() 时指定它。也许这对 check() 示例有帮助。

按照建议使用 R_LIBS_USER here ,对我不起作用。

关于R CMD 检查 - 包可以安装但不能加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34809199/

相关文章:

c# - 语义合并工具

css - 元素在开发工具中消失

data.table 中的逐行操作和更新

r - 如何从具有多个输出的功能进行分配?

R devtools 不读取包含空格的 Windows 路径,在 $PATH 变量中找不到

r - 开发一套依赖 R 包的最佳实践

r - 如何从 R 包的 README.Rmd 生成 README.md?

r - 如何在不加载包的情况下从另一个包扩展 S3 方法

R从列表中提取数据帧,列名中没有前缀

r - 如何在 R ggplot2 中用多个变量标记轴