[R-pkg-devel] check warning in examples

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Tue Apr 30 01:59:39 CEST 2019


On 29/04/2019 6:12 p.m., Berry Boessenkool wrote:
> 
> Hi,
> 
> my package has a warning in check (locally + all rhub::check_for_cran platforms):
> 
> * checking for unstated dependencies in examples ... WARNING
> Warning: parse error in file 'berryFunctions-Ex.R':
> 'match' requires vector arguments
> 
> When I run the -Ex.R file locally (Windows 10, R3.5.2), things work fine, however.
> parse("*-Ex.R") works fine.
> devtools::run_examples() works fine as well.
> https://github.com/brry/berryFunctions
> 
> Does anybody have an idea how to locate the cause for such a warning?
> Does it mean something that this turns up in check unstated deps while checking examples itself has no problems?


It looks like a bug in the QC code, triggered by this line in one of 
your examples for ?dataStr:

   data(list=x$Call, package=x$Package, envir=env)

In the R-devel source file src/library/tools/R/QC.R, in function 
.check_packages_used_helper(), there's a nested function called 
find_bad_exprs().  It parses lots of calls, and in particular, in 
handling calls to data(), it has this code:


if(Call %in%  "data" && length(e) >= 3L) {
                 mc <- match.call(utils::data, e)
                 if(!is.null(pkg <- mc$package) && pkg %notin% 
depends_suggests)
                     bad_data <<- c(bad_data, pkg)
             }

Here e is the quoted expression from above, and Call is "data".  This 
sets pkg to the quoted expression x$package, and the test "pkg %notin% 
depends_suggests" dies with the error message you saw.

I think the fix for this is to check that pkg works out to be a string, 
not an expression, e.g.

  if(!is.null(pkg <- mc$package) && is.character(pkg) && pkg %notin% 
depends_suggests)

I'm not sure what would be the best thing for you to do.  You could fool 
the test by using obscure code like this

   do.call("data", list(list = x$Call, package=x$Package, envir=env))

or maybe you could just ignore the warning, pointing out that it is a 
bug in the QC code.

Duncan Murdoch



More information about the R-package-devel mailing list