alexander keth
alexander keth

Reputation: 1435

R CMD check - package can be installed but not loaded

I created a test-package called letstrythis to illusttrate the problem. The test-package is very simple and consits of the following files:

and

which is automatically created by roxygen2.

Every time I check my package with devtools::check() I get the following error message:

* 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.

Apperently the package cannot be loaded with library() everytime the example in R/add-numbers.R is executed.

Upvotes: 3

Views: 1024

Answers (1)

Niels
Niels

Reputation: 316

Setting the library location in the call to library() helps. This might not be the ideal solution when writing general examples that will be published. For me, it was helpful when running tests during devtools::check(). I had the same issues when working on a network drive, i.e. packages specified in tests/testthat.R could not be loaded via library(). Instead of copying the whole package under development to a local drive I used the command

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

in the tests/testthat.R file. The command will load the package from the root of the current working directory. This is helpful during devtools::check(), because it will make R use the clean package located in the temporary package_under_dev.Rcheck folder which is created during the checking routine.

Alternatively, one could also add the root folder to the search paths via

.libPaths(c("..", .libPaths()))

and then one doesn't need to specify it in the call to library(). Maybe this would help in case of check()ing the examples.

Playing around with R_LIBS_USER, as suggested here, did not work for me.

Upvotes: 2

Related Questions