[R] distinguishing input objects for a function

Duncan Murdoch murdoch.duncan at gmail.com
Wed Oct 3 12:06:55 CEST 2012


On 12-10-03 1:59 AM, ishi soichi wrote:
> platform       x86_64-apple-darwin9.8.0
> arch           x86_64
> os             darwin9.8.0
> system         x86_64, darwin9.8.0
> version.string R version 2.13.1 (2011-07-08)
>
> I am trying to write a function that takes a few objects as input.
>
> test <- function(directory, num = 1:100) {
>> }
>
>
> the argument, "num", has the default value. But when the function is
> called, it can take an array as well,
>
> test("directory", c(1, 2, 3))

I don't understand the question.  You've passed the vector 1:3 as the 
num argument (by position).   Do you want to prevent someone from 
passing an array?

>
> I can parse the both arguments by converting them into string, but I am
> wondering if there is a better (more efficient) way to achieve this.

I don't understand what you want to achieve.


> Perhaps, using built-in R functions can help, I suppose?
>
> Does anyone have any idea for the function taking more than one kind of
> argument?

In most functions, R allows any type of argument in any position.  If 
your function only works for one type, usually an error will follow, but 
you can add your own tests for better error messages.  For example,

stopifnot(is.numeric(num))

will trigger an error if num is a non-numeric object.  See also stop() 
for an unconditional error (presumably controlled by an if()).

Duncan Murdoch




More information about the R-help mailing list