[R] Variable Argument Function

Robert Sherry rsherry8 at comcast.net
Mon Feb 8 01:37:11 CET 2016


Ben,

Your solution solved my issue. Thank you. I do not see a need for a 
nested function. Based upon your solution, I came up with
this solution:

fbob = function (...)
{
     l1 = list(...)
     for( i in 1:length(l1) )
         cat( "i is ", l1[[i]], "\n" )
     return (0);
}

It does not use nested functions and it works also. Is there a reason 
why your solution is better?

Bob

On 2/7/2016 7:14 PM, Ben Tupper wrote:
> 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
>>> a bad idea?
>>>
>>> Thanks
>>> Bob
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>>> 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
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> 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
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list