I am currently refactoring a function within an existing package and I am not sure what the "best"/"cleanest" way to approach the overall function design is.
The function takes as arguments one String
str_arg and 3 other Numerics/Strings
Depending on the contents of
str_arg different checks are run on the other arguments. There are 10+ valid options that
str_args can represent.
The obvious choice would be to have one long chain of
if, else if and call the check functions in each branch, with as many choices as there are this will be pretty long.
The only other option I came up with would be a kind of lookup table: a
data.frame with a name column and columns for the check function names and then use
get() to do something like this:
check_function1 <- function(x) is.numeric(x) str_arg <- "option1" arg1 <- "some input" df <- data.frame(name = "option1", check = "check_function1") f_name <- df[df$name == str_arg]$check get(f_name)(arg1)
This would result in less code but I don't think it is the right choice for readability as the df would need to be defined in some other file to actually have less code in the function.
ìf else seems better to me but maybe I am missing something obvious?
Thanks for your input!