[R] attaching data.frame/list within a function
Liaw, Andy
andy_liaw at merck.com
Wed Apr 14 20:50:19 CEST 2004
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
>
> johannesson1 at llnl.gov
> Tel: (925) 422-3901, Fax: (925) 422-4141
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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
>
>
More information about the R-help
mailing list