The three-dot question
On 13-01-14 6:34 AM, Feng Li wrote:
Hi Michael, Thanks for the reply. On Mon, 2013-01-14 at 10:33 +0000, R. Michael Weylandt wrote:
Hi Feng, I'm afraid I don't entirely understansd your question -- the `...` construct only allows you to pass variable numbers of arguments, not to have arbitrary access to the parent frames. You need to manually extract "b" from the dots inside of testFun. Also, it's quite frowned upon to put ##rm(list = ls())## in your examples: it's the mailing list equivalent of asking a buddy to come over to help you move and then punching him in the face when he tries to lift your sofa.
The rm line just wants to declare there is no "b" in the global environment. I did not mean people ought to try it. Also notice that there is ">" in front of the rm. You won't get hurt if you just copy and paste it. If it bites you, the mouse and keyboard did it:)
If you are using a smart GUI, it will give you the option of pasting just the commands, so there's a reasonable risk of executing the rm(). On the other hand, users should always start with an empty workspace, so it's not so much a punch in the face as a minor annoyance. Duncan Murdoch
Cheers, Feng
Cheers, Michael On Mon, Jan 14, 2013 at 10:21 AM, Feng Li <m at 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 at 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.