[R-sig-teaching] count the number of argument of a function
Martin Maechler
maechler at stat.math.ethz.ch
Wed Oct 21 10:33:20 CEST 2015
>>>>> Randall Pruim <rpruim at calvin.edu>
>>>>> on Tue, 20 Oct 2015 21:15:14 +0000 writes:
> A couple more questions for you:
> * what type of object do you want created? (A matrix? data frame? something else?)
> * is there a reason to have 3 named arguments and then … if you are treating them all the same in the end anyway? Seems like that just makes your function less flexible and harder to code. But I don’t know your use case.
> As the previously sent example shows, you can easily apply cbind to all of the items in … (without needing to know how many there were). I’m now guessing that your attempt to calculate m was not needed. You can always recover it from the number of columns in the object produced by cbind() if you need it later.
> Good luck with what I hope is the more interesting part of your programming project that comes after this.
> —rjp
Sorry to be a bit sarcastic, but if you had not *mis*used
R-SIG-teaching and rather used R-help for asking a somewhat
basic question about R, you would have gotten better answers
more quickly than all the preceding answers:
The answer is to use nargs()
[which even in its name suggests to give what you ask in the
e-mail subject of this thread]
Martin Maechler
>> On Oct 20, 2015, at 4:17 PM, Steven Stoline <sstoline at gmail.com> wrote:
>>
>> Dear Michael:
>>
>> Thank you very much for your quick reply.
>>
>> Just one more thing. Assume we have these three data sets (vectors), but
>> could be 4, 5 or more data sets.
>>
>> x1<-c(1,2,3,4,5)
>> x2<-c(11,22,33,44,55)
>> x3<-c(111,222,333,444,555)
>>
>>
>> Inside the same fumction I do need to use the cbind() function to cbind
>> these m (m could be 2, 3, 4, or any numbers) data sets. This what I trired,
>> but it did not work.
>>
>> f <- function(x1,x2,x3){
>> m<-length(formals(sys.function()))
>>
>> print(m)
>>
>> data<-cbind(x1,x2,...,xm) #### I need
>> some help with this part
>>
>> print(data)
>>
>> }
>>
>> f(x1,x2,x3)
>>
>>
>>
>> with thanks
>> steve
>>
>>
>>
>> On Tue, Oct 20, 2015 at 3:51 PM, Michael Weylandt <
>> michael.weylandt at gmail.com> wrote:
>>
>>> On Tue, Oct 20, 2015 at 2:45 PM, Steven Stoline <sstoline at gmail.com>
>>> wrote:
>>>
>>>> Dear All:
>>>>
>>>> I am wondering whether there is a way to read and assign the number of
>>>> arguments of a function inside this function.
>>>>
>>>>
>>>> ### For example
>>>>
>>>> fun<-function(x1,x2,x3,...){
>>>>
>>>> m<- number of arguments
>>>>
>>>> }
>>>>
>>>> ### e.g.
>>>>
>>>> fun<-function(x1,x2,x3){
>>>>
>>>> m<- number of arguments
>>>>
>>>> ### m =3 in this case
>>>>
>>>> }
>>>>
>>>> ### e.g.
>>>>
>>>> fun<-function(x1,x2,x3,y1,z1,z2){
>>>>
>>>> m<- number of arguments
>>>>
>>>> ### m =6 in this case
>>>>
>>>> }
>>>>
>>>
>>>
>>> It's not entirely kosher, but
>>>
>>> length(formals(sys.function()))
>>>
>>> will work.
>>>
>>> f <- function(a, b,c, d, e, f){
>>> length(formals(sys.function()))
>>> }
>>>
>>> f() ## 6
>>>
>>
>>
>>
>> --
>> Steven M. Stoline
>> 1123 Forest Avenue
>> Portland, ME 04112
>> sstoline at gmail.com
>>
More information about the R-sig-teaching
mailing list