Thanks for the code Andy -- there seams to be no 'nice' way to do 
this.  The use of 'with' does not work in the context I'm thinking about 
(as John Fox suggested to the list, and Douglas Grove personally).

Thanks, Gardar

At 02:50 PM 4/14/2004 -0400, Liaw, Andy wrote:
>What you are asking for doesn't even work at the R prompt, let alone inside
>a function.  The _really_ ugly kludge I manage to come up with is to
>manually assign the components of the list (or variables in the data frame)
>into the function's environment:
>
>f <- function(mylist=list(a=1:5)) {
>     nm <- names(mylist)
>     for (i in seq(along=nm)) {
>         assign(nm[i], mget(nm[i], envir=NULL, ifnotfound=mylist[i]))
>     }
>     sapply(names(mylist), function(x) print(get(x)))
>     ls()
>}
>
>Here are a couple of tests:
>
> > f()
>$a
>[1] 1 2 3 4 5
>
>[1] "a"      "i"      "mylist" "nm"
> > f(list(b=5:1, z="ha!"))
>$b
>[1] 5 4 3 2 1
>
>$z
>[1] "ha!"
>
>[1] "b"      "i"      "mylist" "nm"     "z"
>
>Andy
>
> > From: Gardar Johannesson
> >
> > I'm trying to find a good way of attaching a list within a
> > function such
> > that the attached variables (the list's members) precede the global
> > environment (.GlobalEnv) in the search list.  Here is a
> > non-working example
> > using attach(), which hopefully explains better what I'm trying to do:
> >
> >  > foo <- function(x=0, input=list(a=10)) {
> > +   attach(input)
> > +   on.exit(detach(input))
> > +   print(search())
> > +   print(a)
> > + }
> >  >
> >  > a
> > Error: Object "a" not found
> >  > foo()  ## this prints out a = 10
> > [1] ".GlobalEnv"       "input"            "package:methods"
> > "package:stats"
> > [5] "package:graphics" "package:utils"    "Autoloads"
> > "package:base"
> > [1] 10
> >  >
> >  > a <- 0
> >  > foo()  ## this prints out a = 0, not a = 10
> > [1] ".GlobalEnv"       "input"            "package:methods"
> > "package:stats"
> > [5] "package:graphics" "package:utils"    "Autoloads"
> > "package:base"
> > [1] 0
> >  >
> >
> >
> > Thanks,
> >
> >                  Gardar
> >
> >
> > ___________________________________________________________________
> > Gardar Johannesson
> > Lawrence Livermore National Laboratory
> > 7000 East Avenue, L-229
> > Livermore, CA 94550
> >
> > [EMAIL PROTECTED]
> > Tel: (925) 422-3901,  Fax: (925) 422-4141
> >       [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > [EMAIL PROTECTED] mailing list
> > https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide!
> > http://www.R-project.org/posting-guide.html
> >
> >
>
>
>------------------------------------------------------------------------------
>Notice:  This e-mail message, together with any attachments, contains 
>information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station, New 
>Jersey, USA 08889), and/or its affiliates (which may be known outside the 
>United States as Merck Frosst, Merck Sharp & Dohme or MSD and in Japan, as 
>Banyu) that may be confidential, proprietary copyrighted and/or legally 
>privileged. It is intended solely for the use of the individual or entity 
>named on this message.  If you are not the intended recipient, and have 
>received this message in error, please notify us immediately by reply 
>e-mail and then delete it from your system.
>------------------------------------------------------------------------------ 
>

___________________________________________________________________
Gardar Johannesson
Lawrence Livermore National Laboratory
7000 East Avenue, L-229
Livermore, CA 94550

[EMAIL PROTECTED]
Tel: (925) 422-3901,  Fax: (925) 422-4141
        [[alternative HTML version deleted]]

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to