Hi: If you want testFun to know about b, then you would have to do
b<-list(...)$b inside
TestFun itself. But the dot dot dot argument is not really for that
purpose.
The use of dotdotdot is for the case where a function INSIDE testFun has a
formal argument named say b. Then you can pass the ... at the top level and
the function inside will receive the ... but automatically slurp the b out
of the dot dot dot and know about it. Below is an example of the use I'm
talking about. It was created by a mentoR when I was trying to understand
the dotdotdot concept.
hope it helps you.
#=====================================================================
Note that f does not directly know about x and g does. That is g knows
about x even though f does
not know and g got it from f.
g <- function(x, ...) { cat("g: exists('x') = ",
exists("x"), "\n");
list(...) }
f <- function(...) { cat("f: exists('x') = ",
exists("x"), "\n"); g(...) }
f(x = 3, y = 4)
f: exists('x') = FALSE
g: exists('x') = TRUE
$y
On Mon, Jan 14, 2013 at 5:21 AM, Feng Li <m@feng.li> wrote:
> Dear all,
>
> Why does not the three-dot accept arguments from the parent environment?
> I am just confused with this error, can someone give me a hint?
>
> > rm(list=ls())
> > testFun <- function(a, ...)
> + {
> + if(a){
> + print(a)
> + }else
> + {
> + print(b)
> + }
> + }
> >
> > myTask <- function(a)
> + {
> + b <- 3
> + testFun(a, b = b)
> + }
> > myTask(FALSE)
> Error in print(b) : object 'b' not found
>
>
> Thanks in advance!
>
> Feng
>
> --
> Feng Li
> Department of Statistics
> Stockholm University
> SE-106 91 Stockholm, Sweden
> http://feng.li/
>
> ______________________________________________
> R-help@r-project.org mailing list
> 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.
>
[[alternative HTML version deleted]]