Skip to content

Does nargin and nargout work with R functions?

3 messages · Jason Rupert, Baptiste Auguie

#
I am porting some MATLAB functions over to R and hopefully into a package, so I am curious if nargin and nargout work with R functions.

Here is kind of an example of where I need to head in order to port "control-1.0.11" from Octave over to R.  The Octave "control-1.0.11" package has the capability to produce bode plots of transfer functions.  I hope to post this package once the port over to R is complete.    

Thanks again for all the feedback and insights. 

bode<-function(sys, w, outputs, inputs, plot_style)
{

# ...

if (nargin < 1 || nargin > 5)
{
        print("This works")
}

if (nargout < 1)
{
       print("This also works") 
}

return(list(mag_r, phase_r, w_r))

}
#
Hi,

I think you can use match.call() to retrieve the number of arguments
passed to a function (see below), but I don't think nargout makes
sense in R like it does in Matlab.

foo <- function(...){

  print(match.call())
  nargin <- length(as.list(match.call())) -1
  print(nargin)
}

foo(a=1, b=2)
foo()
foo(1:3, a=2, c=3)

HTH,

baptiste

2009/11/26 Jason Rupert <jasonkrupert at yahoo.com>:
3 days later
#
This works great. 

Thanks for your help. 



----- Original Message ----
From: baptiste auguie <baptiste.auguie at googlemail.com>
To: Jason Rupert <jasonkrupert at yahoo.com>
Cc: R-help <R-help at r-project.org>
Sent: Thu, November 26, 2009 11:08:57 AM
Subject: Re: [R] Does nargin and nargout work with R functions?

Hi,

I think you can use match.call() to retrieve the number of arguments
passed to a function (see below), but I don't think nargout makes
sense in R like it does in Matlab.

foo <- function(...){

  print(match.call())
  nargin <- length(as.list(match.call())) -1
  print(nargin)
}

foo(a=1, b=2)
foo()
foo(1:3, a=2, c=3)

HTH,

baptiste

2009/11/26 Jason Rupert <jasonkrupert at yahoo.com>: