[R] R CRAN check works great on local Mac OS, but failed on Windows (win-builder web). Why?

yazeng yaohui-zeng at uiowa.edu
Sat Sep 12 21:27:02 CEST 2015


I have my R package checked on local Mac OS via R CMD check --as-cran.
Everything works great: no errors, no warnings, just 1 note about first
submission, all test files passed! However, when I submit my .tar.gz package
file to the http://win-builder.r-project.org to check on Windows. Some
errors occurred when running the examples.

The main issue is related to the object created by Matrix. All errors
indicated 

*invalid class "dgCMatrix" object: Dimnames[1] is not a character vector.
*

Detailed check log is attached below. I checked the examples on local
machine line-by-line, but cannot identify the problem.

Is the error caused by that maybe the Matrix package was written differently
for Mac OS and Windows platforms?

/* checking examples ...
** running examples for arch 'i386' ... ERROR
Running examples in 'grpregOverlap-Ex.R' failed
The error most likely occurred in:

> base::assign(".ptime", proc.time(), pos = "CheckExEnv")
> ### Name: cv.grpregOverlap
> ### Title: Cross-validation for choosing regularization parameter lambda
> ### Aliases: cv.grpregOverlap
> 
> ### ** Examples
> 
> ## linear regression, a simulation demo.
> set.seed(123)
> group <- list(gr1 = c(1, 2, 3),
+               gr2 = c(1, 4),
+               gr3 = c(2, 4, 5),
+               gr4 = c(3, 5),
+               gr5 = c(6))
> beta.latent.T <- c(5, 5, 5, 0, 0, 0, 0, 0, 5, 5, 0) # true latent
> coefficients.
> # beta.T <- c(5, 5, 10, 0, 5, 0), true variables: 1, 2, 3, 5; true groups:
> 1, 4.
> X <- matrix(rnorm(n = 6*100), ncol = 6)
> X.latent <- expandX(X, group)
Error in validObject(.Object) : 
  invalid class "dgCMatrix" object: Dimnames[1] is not a character vector
Calls: expandX ... initialize -> callNextMethod -> .nextMethod ->
validObject
Execution halted/


*I also attached source code for the two related functions.*


/expandX <- function(X, group) {
  incidence.mat <- incidenceMatrix(X, group) # group membership incidence
matrix
  over.mat <- Matrix(incidence.mat %*% t(incidence.mat), sparse = TRUE, 
                     dimnames = dimnames(incidence.mat)) # overlap matrix
  grp.vec <- rep(1:nrow(over.mat), times = diag(over.mat)) # group index
vector

  # expand X to X.latent
  X.latent <- NULL
  names <- NULL

  ## the following code will automatically remove variables not included in
'group'
  for(i in 1:nrow(incidence.mat)) {
    idx <- incidence.mat[i,]==1
    X.latent <- cbind(X.latent, X[, idx, drop=FALSE])
    names <- c(names, colnames(incidence.mat)[idx])
  }
  colnames(X.latent) <- paste('grp', grp.vec, '_', names, sep = "")
  X.latent
}

incidenceMatrix <- function(X, group) {
  n <- nrow(X)
  p <- ncol(X)
  if (class(group) != 'list') {
    stop("Argument 'group' must be a list of integer indices or character
names of variables!")
  }
  J <- length(group)
  grp.mat <- Matrix(0, nrow = J, ncol = p, dimnames=list(rep(NA, J),
                                                         rep(NA, p)))    
  if(is.null(colnames(X))) {
    colnames(X) <- paste("V", 1:ncol(X), sep="")    
  }
  if (is.null(names(group))) {
    names(group) <- paste("grp", 1:J, sep="")
  }

  if (class(group[[1]]) == 'numeric') {
    for (i in 1:J) {
      ind <- group[[i]]
      grp.mat[i, ind] <- 1
      colnames(grp.mat)[ind] <- colnames(X)[ind]
    }
  } else { ## character, names of variables
    for (i in 1:J) {
      grp.i <- as.character(group[[i]])
      ind <- colnames(X) %in% grp.i
      grp.mat[i, ] <- 1*ind
      colnames(grp.mat)[ind] <- colnames(X)[ind]
    }
  }
  rownames(grp.mat) <- as.character(names(group))
  # check grp.mat
  if (all(grp.mat == 0)) {
    stop("The names of variables in X don't match with names in group!")
  }

  grp.mat
}
/



--
View this message in context: http://r.789695.n4.nabble.com/R-CRAN-check-works-great-on-local-Mac-OS-but-failed-on-Windows-win-builder-web-Why-tp4712179.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list