[R] with vs. attach

David Winsemius dwinsemius at comcast.net
Fri May 6 02:43:47 CEST 2016


> On May 5, 2016, at 5:12 PM, Spencer Graves <spencer.graves at effectivedefense.org> wrote:
> 
> I want a function to evaluate one argument
> in the environment of a data.frame supplied
> as another argument.  "attach" works for
> this, but "with" does not.  Is there a way
> to make "with" work?  I'd rather not attach
> the data.frame.
> 
> 
> With the following two functions "eval.w.attach"
> works but "eval.w.with" fails:
> 
> 
> dat <- data.frame(a=1:2)
> eval.w.attach <- function(x, dat){
>   attach(dat)
>   X <- x
>   detach()
>   X
> }
> 
> eval.w.with <- function(x, dat){
>   with(dat, x)
> }
> 
> eval.w.attach(a/2, dat) # returns c(.5, 1)

How about using eval( substitute( ...))?

 eval.w.sub <- function(expr, datt){
   eval( substitute(expr), env=datt)
                         }
 eval.w.sub(a/2, dat)
#[1] 0.5 1.0


-- 
David.


> 
> eval.w.with(a/2, dat) # Error ... 'a' not found
> 
> 
> Thanks, Spencer Graves
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list