Re: [R] Variable Argument Function

2016-02-07 Thread Duncan Murdoch

On 07/02/2016 7:14 PM, Ben Tupper wrote:

Hi,


On Feb 7, 2016, at 6:24 PM, Duncan Murdoch  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?


No need for that.  His original function would work if he had used 
list(...) instead of as.list(...).


Duncan Murdoch



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@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@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@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@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.


Re: [R] Variable Argument Function

2016-02-07 Thread Robert Sherry

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  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@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@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@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@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.


Re: [R] Variable Argument Function

2016-02-07 Thread Ben Tupper
Hi,

> On Feb 7, 2016, at 6:24 PM, Duncan Murdoch  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@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@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@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.


Re: [R] Variable Argument Function

2016-02-07 Thread Duncan Murdoch

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.


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@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@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] Variable Argument Function

2016-02-07 Thread Robert Sherry


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(...)
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@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.