From ggrothendieck at gmail.com  Sun Jul  2 03:56:34 2006
From: ggrothendieck at gmail.com (Gabor Grothendieck)
Date: Sat, 1 Jul 2006 21:56:34 -0400
Subject: [Rd] Test for argument in ...
In-Reply-To: <44A71AB1.4000804@bfro.uni-lj.si>
References: <44A71AB1.4000804@bfro.uni-lj.si>
Message-ID: <971536df0607011856m10f64854qd8f42c5de15d7387@mail.gmail.com>

Try this:

> f <- function(...) if (!is.null(list(...)$arg1)) cat("arg1 found\n") else cat("arg1 not found\n")
> f(arg1 = 3)
arg1 found
> f(arg2 = 3)
arg1 not found

On 7/1/06, Gregor Gorjanc <gregor.gorjanc at gmail.com> wrote:
> Hello!
>
> Say I have a function foo1, which has argument ... to pass various
> arguments to foo2 i.e.
>
> foo1 <- function(x, ...)
> {
>  foo2(x, ...)
> }
>
> Say that foo2 accepts argument arg1 and I would like to do the following:
> - if foo1 is called as foo1(x) then I would like to assign some value to
> arg1 inside foo1 before calling foo2
>
> arg1 <- "some value"
> foo2(x, arg1=arg1)
>
> - if foo1 is called foo1(arg1="some other value") do not assign some
> value to arg1 and call foo2
>
> foo2(arg1=arg1)
>
> However, I am not able to do this since I do not know how to test/check
> if arg1 was given in foo1. Is it possible to test whether some argument
> was passed in "..." i.e. something like
>
> foo1 <- function(x, ...)
> {
>  if(testForArgumentInThreeDots(arg1)) arg1 <- "some value"
>  foo2(x, arg1=arg1, ...)
> }
>
> Thanks!
>
> --
> Lep pozdrav / With regards,
>    Gregor Gorjanc
>
> ----------------------------------------------------------------------
> University of Ljubljana     PhD student
> Biotechnical Faculty
> Zootechnical Department     URI: http://www.bfro.uni-lj.si/MR/ggorjan
> Groblje 3                   mail: gregor.gorjanc <at> bfro.uni-lj.si
>
> SI-1230 Domzale             tel: +386 (0)1 72 17 861
> Slovenia, Europe            fax: +386 (0)1 72 17 888
>
> ----------------------------------------------------------------------
> "One must learn by doing the thing; for though you think you know it,
>  you have no certainty until you try." Sophocles ~ 450 B.C.
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



[Rd] Test for argument in ...
Gabor Grothendieck