#* This example is taken from the discussion of argument checking at
#* http://www.r-bloggers.com/programming-with-r---checking-function-arguments/
cylinder.volume <- function(height, radius){
ArgCheck <- newArgCheck()
ArgCheck <- addError(missing(height),
"A value for 'height' was not provided",
ArgCheck)
ArgCheck <- addError(ifelse(!missing(height), height < 0, FALSE),
"'height' must be a non-negative number",
ArgCheck)
ArgCheck <- addError(missing(radius),
"A value for 'radius' was not provided",
ArgCheck)
ArgCheck <- addError(ifelse(!missing(radius), radius < 0, FALSE),
"'radius' must be a non-negative number",
ArgCheck)
ArgCheck <- addWarning(ifelse(!missing(height) & !missing(radius),
height < radius, FALSE),
"When 'height' < 'radius', you have a short, awkward looking cylinder",
ArgCheck)
finishArgCheck(ArgCheck, "cylinder.volume")
volume <- pi * radius^2 * height
volume
}
cylinder.volume()
cylinder.volume(height = -3)
cylinder.volume(height = 3, radius = -2)
cylinder.volume(height = 3, radius=2)
cylinder.volume(height = -8, radius = 4)Run the code above in your browser using DataLab