R/isSupported.R

Defines functions isSupported

Documented in isSupported

#' @title Check if a variable has a class supported by dataReporter
#' 
#' @description A \code{\link{checkFunction}} that checks if \code{v} has 
#' one of the classes supported by dataReporter, namely \code{character},
#' \code{factor}, \code{numeric}, \code{integer}, \code{labelled},
#' \code{haven_labelled},
#' \code{logical} and \code{Date} (inlcuding other classes that inherits
#' from any of these classes). A user supported list can be provided
#' in the \code{treatXasY} argument, which will let the user decide
#' how unsupported classes should be treated. This
#' function is intended for use as a precheck in \code{\link{makeDataReport}}.
#' 
#' @param v A variable (vector) to check. All variable types are allowed.
#' 
#' @return  A \code{\link{checkResult}} with three entires: 
#' \code{$problem} (a logical indicating whether \code{v} contains only one value), 
#' \code{$message} (if a problem was found, a message describing which single 
#' value the variable takes and how many missing observations it contains, otherwise 
#' ""), and \code{$problemValues} (always \code{NULL}).  
#'  
#' @examples 
#' integerVar <- 1:10 #supported
#' rawVar <- as.raw(1:10) #not supported
#' 
#' isSupported(integerVar)
#' isSupported(rawVar)
#' 
#' @seealso \code{\link{check}}, \code{\link{allCheckFunctions}}, 
#' \code{\link{checkFunction}}, \code{\link{checkResult}}
#' 
#' @export
isSupported <- function(v) {
  suppClasses <-  c("character", "factor", "labelled", "haven_labelled", 
                    "numeric", "integer", 
                    "logical", "Date")
  vClasses <- class(v)
  out <- list(problem = FALSE, message = "", problemValues = NULL)
  if (any(vClasses %in% suppClasses)) {
    return(checkResult(out))
  }
  out$problem <- TRUE
  out$message <- paste("The variable has class", vClasses[1],
                       "which is not supported by dataReporter.")
  checkResult(out)
}


#make it a checkFunction
#' @include allClasses.R allClasses.R
isSupported <- checkFunction(isSupported, 
                         "Check if the variable class is supported by dataReporter.", 
                         allClasses())

Try the dataReporter package in your browser

Any scripts or data that you put into this service are public.

dataReporter documentation built on Nov. 11, 2021, 9:06 a.m.