首页 文章

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

提问于
浏览
1

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

  • DESCRIPTION
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
  • NAMESPACE
# 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() 加载包 .

1 回答

  • 2

    在调用 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() 时不需要指定它 . 也许这对于例子来说会有所帮助 .

    正如here所建议的那样玩 R_LIBS_USER 对我来说不起作用 .

相关问题