Vasily A Vasily A - 5 months ago 35
R Question

passing several arguments to FUN of lapply (and others *apply)

(this must be a very basic question, but so far I failed to find an answer in R manuals...)

when I use lapply with the syntax of

lapply(input, myfun);
- this is easily understandable, and I can define myfun like that:

myfun <- function(x) {
# doing something here with x

lapply(input, myfun);

and elements of
are passed as
argument to

But what if I need to pass some more arguments to
? For example, it is defined like that:

myfun <- function(x, arg1) {
# doing something here with x and arg1

how can I use this function with passing both
elements (as
argument) and some other argument?

Thanks in advance!


If you look up the help page, one of the arguments to lapply is the mysterious .... When we look at the Arguments section of the help page, we find the following line:

...: optional arguments to ‘FUN’.

So all you have to do is include your other argument in the lapply call as an argument, like so:

lapply(input, myfun, arg1=6)

and lapply, recognizing that arg1 is not an argument it knows what to do with, will automatically pass it on to myfun. All the other apply functions can do the same thing.

An addendum: You can use ... when you're writing your own functions, too. For example, say you write a function that calls plot at some point, and you want to be able to change the plot parameters from your function call. You could include each parameter as an argument in your function, but that's annoying. Instead you can use ... (as an argument to both your function and the call to plot within it), and have any argument that your function doesn't recognize be automatically passed on to plot.