Skip to content
Snippets Groups Projects
Commit 161e3ce8 authored by Gael  MILLOT's avatar Gael MILLOT
Browse files

first commit

parents
No related branches found
No related tags found
No related merge requests found
Download the desired Tagged version, never the current master.
Source the cute_little_functions.R into R/RStudio to have the functions available in the working environment.
################################################################
## ##
## R DEBUGGING TOOLS v1.0 ##
## ##
## Gael A. Millot ##
## ##
## Compatible with R v3.5.1 ##
## ##
################################################################
str_basic_arg_check_dev <- '
# AIM:
# string that check:
# NULL argument default value
# argument without default values
# STRING
default.arg.list <- formals(fun = sys.function(sys.parent(n = 2))) # list of all the arguments of the function with their default values (not the values of the user !). Use n = 2 when he string has to be evaluated by eval() inside a function. Use n=1 (default) if not evaluation. It seems that ls() as first line of the function provide the names of the arguments (empty, called, etc., or not)
arg.without.default.value <- sapply(default.arg.list, is.symbol) & sapply(sapply(default.arg.list, as.character), identical, "") # logical to detect argument without default values (these are typeof "symbol" and class "name" and empty character
cat(paste0("\n\n================================\n\nARGUMENT CHECKING\n\n================================\n"))
cat(paste0("\n================\nARGUMENTS OF THE FUNCTION ARE (INCLUDING DEFAULT VALUES):\n"))
print(default.arg.list)
if(any(sapply(default.arg.list, FUN = is.null))){
cat(paste0("\n================\nNULL ARGUMENTS ARE: ", paste(names(default.arg.list)[sapply(default.arg.list, FUN = is.null)], collapse= " ")))
}else{
cat(paste0("\n================\nNO NULL ARGUMENTS"))
}
if(any(arg.without.default.value)){ # argument names that are empty by default added now because null arguments will not be inserted thenafter
cat(paste0("\n================\nARGUMENTS WITHOUT DEFAULT VALUES ARE: ", paste(names(default.arg.list)[arg.without.default.value], collapse= " ")))
}else{
cat(paste0("\n================\nNO ARGUMENTS WITHOUT DEFAULT VALUES"))
}
cat(paste0("\n================\n"))
# END STRING
'
str_arg_check_with_fun_param_check_dev <- '
# AIM:
# string that check:
# which arguments have been checked using fun_param_check()
# STRING
default.arg.list <- formals(fun = sys.function(sys.parent(n = 2))) # list of all the arguments of the function with their default values (not the values of the user !). Use n = 2 when he string has to be evaluated by eval() inside a function. Use n=1 (default) if not evaluation. It seems that ls() as first line of the function provide the names of the arguments (empty, called, etc., or not)
if( ! any(ls() %in% "checked.arg.names")){
cat(paste0("\n\n================\n\nERROR: MISSING checked.arg.names OBJECT. ARGUMENTS MAY HAVE NOT BEEN CHECKED USING fun_param_check(). SEE THE fun_export_data() FUNCTION FOR THIS KIND OF CHECKING\n\n================\n\n"))
}
if( ! find("fun_param_check") == ".GlobalEnv"){
cat(paste0("\n\n================\n\nERROR: MISSING fun_param_check() FUNCTION IN THE GLOBAL ENVIRONMENT. ARGUMENTS MAY HAVE NOT BEEN CHECKED USING fun_param_check(). SEE THE fun_export_data() FUNCTION FOR THIS KIND OF CHECKING\n\n================\n\n"))
}
cat(paste0("\n\n================================\n\nARGUMENT CHECKING USING fun_param_check()\n\n================================\n"))
if(any(duplicated(checked.arg.names))){ # for function debbuging
cat(paste0("\n================\nTHESE ARGUMENTS ARE DUPLICATED IN CHECK USING fun_param_check(): ", paste(checked.arg.names[duplicated(checked.arg.names)], collapse = " ")))
}
if( any(! names(default.arg.list) %in% checked.arg.names)){ # check the correct number of args # for function debbuging # names(default.arg.list) can be replaced by formalArgs("name of the created function")
cat(paste0("\n================\nTHESE ARGUMENTS HAVE NOT BEEN CHECKED WITH fun_param_check(): ", paste(names(default.arg.list)[ ! names(default.arg.list) %in% checked.arg.names], collapse = " ")))
}else{
cat(paste0("\n================\nALL THE ARGUMENTS HAVE BEEN CHECKED USING fun_param_check()"))
}
cat(paste0("\n================\n"))
# END STRING
'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment