On 13/01/2020 11:02 a.m., Therneau, Terry M., Ph.D. via R-devel wrote:
Where can I find out (and replicate) what options as-cran turns on?

The issue: the following lines generate an error in R CMD check --as-cran  for 
coxme.  But
there is no error without as-cran nor is there one when I run the code in a 
terminal window.

ismat <- function(x)  inherits(x, "matrix") || inherits(x, "bdsmatrix") || 
inherits(x,
"Matrix")
if (ismat(kmat)  ) ....

(The second line is repeated multiple times for multiple arguments.  The ismat 
function is
defined simply to save typing.)

The check log contains multiple instances of the lines below:

< Warning message:
< In if (ismat(kmat)) { :
<   the condition has length > 1 and only the first element will be used

I don't see how the error could arise, but if I know what as-cran is doing 
perhaps I can
replicate it.

  >sessionInfo()
R Under development (unstable) (2020-01-13 r77659)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.3 LTS

Matrix products: default
BLAS:   /usr/local/src/R-devel/lib/libRblas.so
LAPACK: /usr/local/src/R-devel/lib/libRlapack.so

locale:
   [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
   [3] LC_TIME=en_US.UTF-8        LC_COLLATE=C
   [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
   [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
   [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods base

loaded via a namespace (and not attached):
[1] compiler_4.0.0 tools_4.0.0

You have ismat() defined in two places in the package. In the definition in coxme.R, you've got a typo:

    ismat <- function (x) {
inherits(x, "matrix") || inherits(x, "bdsmatrix") | inherits(x, "Matrix")
    }

Notice the "|" instead of "||". I can't see how this would lead to the issue you saw, but it should be fixed.

It's not easy to say what --as-cran does, other than to look at the function that implements R CMD check. That function is the huge tools:::.check_packages. You can run it in an R session using

  options(warn = 2, error = recover)
  tools:::.check_packages(c("--as-cran", "coxme_2.2-14.tar.gz"))

When I do that I get a different error report; it reports this test instead:

   if(class(varlist) == "coxmevar")

That appears in a number of places in the coxme source, and clearly needs to be updated to use inherits().

Duncan Murdoch

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to