Note that attach() has a return value, so you don't need to use as.environment() on the name.
Do note more carefully that the attribute you added to env _has_ 'been dropped', so there is nothing special about package environments here. You seem to believe that you can (re-)attach an actual environment. However (as the help page says), attach() makes a new environment and copies the bindings into that environment so the result of attach() is a different environment which does not inherit any attributes from the argument to attach(). Nor would it be desirable to do so, for the attached environment can be altered independently of the argument to attach(). If you name enviroments to look like packages when they are not you are likely to break quite a lot of things, and yes, that would be expected. On Mon, 17 Sep 2007, Henrik Bengtsson wrote: > Hi. > > contrary to other environments, the attributes of a *package* > environment are dropped (from the new environment) when attach():ing > it to the search() path. This might or might not be surprising, but > have some side effects if rearranging/attaching package environments. > > # Example - Regular environments > env <- new.env() > attr(env, "foo") <- "bar" > print(env) > ## <environment: 0x023f3128> > ## attr(,"foo") > ## [1] "bar" > attach(env, pos=2, name="foo", warn.conflicts=FALSE) > env2 <- as.environment("foo") > print(env2) > ## <environment: 0x023f44c4> > ## attr(,"name") > ## [1] "foo" And no "foo" attribute. > > # Example - Package environments > env <- as.environment("package:utils") > attr(env, "foo") <- "bar" > print(env) > ## <environment: package:utils> > ## attr(,"name") > ## [1] "package:utils" > ## attr(,"path") > ## [1] "C:/PROGRA~1/R/R-2.6.0alpha/library/utils" > ## attr(,"foo") > ## [1] "bar" > attach(env, pos=2, name="package:utils2", warn.conflicts=FALSE) > env2 <- as.environment("package:utils2") > print(env2) > ## <environment: package:utils2> > ## attr(,"name") > ## [1] "package:utils2" > > This becomes a problem, because the 'path' attribute is dropped causing: > > packageDescription("utils2") > ## Error in if (pkgpath == "") { : argument is of length zero > sessionInfo() > ## Error in if (pkgpath == "") { : argument is of length zero > > Again, this might or might not expected. > > Finally: > >> sessionInfo() > R version 2.6.0 alpha (2007-09-14 r42843) > i386-pc-mingw32 > > locale: > LC_COLLATE=English_United States.1252;LC_CTYPE=English_United > States.1252;LC_MONETARY=English_United > States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > Cheers > > Henrik > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel