[R-pkg-devel] error in sample(), invalid 'size' argument

Roberts, David drobert@ @end|ng |rom mont@n@@edu
Wed Jan 15 12:11:45 CET 2020


Colleagues,

    I have a function (maxsimset) in package optpart that has worked for 
at least a decade, passes check --as-cran on my ubuntu-based system, and 
builds without errors at win-builder and CRAN windows, but fails at CRAN 
debian (unstable) with the error

 > mss.test(mss.10,shoshsite$elevation)
Error in sample.int(length(x), size, replace, prob) :
   invalid 'size' argument
Calls: mss.test -> sample -> sample.int

an excerpt of the function is below

  1  mss.test <- function(mss,env,panel='all',
  2              main=deparse(substitute(env)),...)
  3  {
  4      if (class(mss) != "mss") {
  5          stop("You must pass an object of class mss ...")
  6      }
  7      if (!is.numeric(env)) {
  8          stop("You must pass only numeric vectors ... ")
  9      }
10      setsiz <- ncol(mss$member)
11      nset <- mss$numset
12      null <- rep(0,nset)
13      for (i in 1:nset) {
14          tmp <- sample(1:length(env),setsiz)
15          nullmin <- min(env[tmp])
16          nullmax <- max(env[tmp])
17          null[i] <- nullmax - nullmin
18      }
19         .     .      .
20         .     .      .
21         .     .      .
22  }

The error occurs at line 14 in the excerpt above.  As you can see, the 
'size' argument is setsiz, taken at line 10 as the ncol(mss$member); mss 
has already been checked for conformance and does indeed have a list 
object matrix called $member.  In my tests, setsiz has mode numeric, 
class integer, and size 1 as expected.  The specific error message I 
receive can be generated from sample() if size is a list object or 
data.frame, but not a vector or matrix.

Since I cannot replicate the error on any machines I have access to, I 
am at a loss for the reason behind the error.  If this should go to 
R-devel with respect to r77656 ( 2020-01-12) please advise.

Thanks in advance for any help, Dave


More information about the R-package-devel mailing list