[R] Variable Argument Function

Ben Tupper btupper at bigelow.org
Mon Feb 8 01:14:38 CET 2016

```Hi,

> On Feb 7, 2016, at 6:24 PM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
>
> On 07/02/2016 6:12 PM, Robert Sherry wrote:
>>
>> I would like to write a function in R that would take a variable number
>> of integers as parameters. I do not have a pressing reason to do this, I
>> am just trying to learn R. I thought a good first step would be to print
>> out the arguments. So I wrote the following function:
>>
>> f1 = function (...)
>> {
>>      list1 = as.list(...)
>
> This is wrong.  The ... object is weird; it's not something that can be coerced to a list.  However, you can pass it as list(...) and it will give you what you were expecting.
>

Do you mean that Bob should nest a function within f1?  Like this?

f1 = function (...){
f2 <- function(list1){
for( i in 1:length(list1) ) cat( "i is ", list1[[i]], "\n" )
return (0)
}
f2(list(...))
}

f1(2,4,10,12)

> f1(2,4,10,12)
i is  2
i is  4
i is  10
i is  12

Ben

> The theory is that it will expand to multiple arguments to the list() function, which constructs a list containing them.  as.list() doesn't want a bunch of arguments, it will just ignore most of them.
>
> Duncan Murdoch
>
>>      for( i in 1:length(list1) )
>>          cat( "i is ", list1[[i]], "\n" )
>>      return (0)
>> }
>>
>> I ran it as:
>>      f1(2,4,10,12)
>> and I get:
>>      i is  2
>>      [1] 0
>> I was hoping for
>>      i is  2
>>      i is  4
>>      i is  10
>>      i is  12
>>
>> I am hoping somebody can tell me what I am doing wrong. Is using a list
>>
>> Thanks
>> Bob
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> and provide commented, minimal, self-contained, reproducible code.

Ben Tupper
Bigelow Laboratory for Ocean Sciences
60 Bigelow Drive, P.O. Box 380
East Boothbay, Maine 04544
http://www.bigelow.org

```