Issue
I have a function which takes another function as an input variable, eg.
WrapperFunction <- function(x, BaseFunction){
y <- cor(x)
BaseFunction(y)
}
Now I want to input various BaseFunctions into this WrapperFunction, to produce a vector of outputs, but how do I define a list of functions so that instead of plugging in each function by hand, I can automate the process with a for loop:
for (i in 1:n){
output[i] <- WrapperFunction(x, FunctionList[i])
}
I’ve tried defining
FunctionList <- list()
FunctionList[1] = Function1 , etc....
, which didn’t work.
Nor did defining
FunctionList <- c("Function1", "Function2", ...)
Solution
If you want to have a list of functions, you can do something like:
myFuns <- list(mean, sd)
And then you can lapply
over this list, or use the for
loop as you wanted. If you use the for
loop make sure that you use the [[
syntax, because this makes sure that you are retrieving the function and not a length one list:
for (i in 1:n){
output[i] <- WrapperFunction(x, myFuns[[i]])
}
or
lapply(myFuns, WrapperFunction, x = x)
Answered By – thothal
Answer Checked By – Cary Denson (BugsFixing Admin)