[R] R CMD check

Jeff Breiwick jeff.breiwick at noaa.gov
Wed Oct 5 23:37:31 CEST 2011


Jeff Breiwick <jeff.breiwick <at> noaa.gov> writes:

> 
> Dear R-Group,
> 
> I have a function that sorts a data frame and oneo of the lines in the 
> function is:
> 
> vars <- unlist(strsplit(formc, "[\\+\\-]"))
> 
> The function works fine and the above line is always reached. However, when 
I 
> include the function in a package and run "R CMD check pkgname" it gives 
this 
> error message:
> 
> '\+' is an unrecognized escape in character string starting "[\+"
> Execution halted
> 
> I am running Win 7, R-2.13.1 and run R CMD ... from a command line, using 
> shell ("start cmd").
> 
> I didn't write the function but it has always run fine without any errors.
> 
> Is there a way to resolve this so it will pass the package check?
> Thank you.
> 
> Jeff
> 

To test 'R CMC check' I created a test package with only this one function in 
it. After running package.skeleton() the only thing I did was to edit 
DESCRIPTION, test-package.Rd and sort.data.frame.Rd. The offending line is 13:

sort.data.frame <- function (x, by) 
{
# From R Help list, by Kevin Wright, Sept. 2004
# Sorts data.frame by columns, either ascending or descending
# e.g. sort.data.frame(x, by = ~ year + fishery + area)
##############################################################
  if (by[[1]] != "~") 
    stop("Argument 'by' must be a one-sided formula.")
  formc <- as.character(by[2])
  formc <- gsub(" ", "", formc)
  if (!is.element(substring(formc, 1, 1), c("+", "-"))) 
   formc <- paste("+", formc, sep = "")
  vars <- unlist(strsplit(formc, "[\\+\\-]"))
  vars <- vars[vars != ""]
  calllist <- list()
  pos <- 1
  for (i in 1:length(vars)) {
    varsign <- substring(formc, pos, pos)
    pos <- pos + 1 + nchar(vars[i])
    if (is.factor(x[, vars[i]])) {
      if (varsign == "-") {
        calllist[[i]] <- -rank(x[, vars[i]])
        }
      else {
        calllist[[i]] <- rank(x[, vars[i]])
        }
      }
    else {
      if (varsign == "-") {
        calllist[[i]] <- -x[, vars[i]]
        }
      else {
        calllist[[i]] <- x[, vars[i]]
        }
      }
    }
  return(x[do.call("order", calllist), ])
}

-Jeff



More information about the R-help mailing list