[R] quote()/eval() question

David Winsemius dwinsemius at comcast.net
Sat Sep 9 04:01:03 CEST 2017


> On Sep 8, 2017, at 4:55 PM, Axel Urbiz <axel.urbiz at gmail.com> wrote:
> 
> Dear list,
> 
> For a reason it would take me long to explain, I need to do something along
> the lines of what's shown below -- i.e., create an object from
> dplyr::summarise, and then evaluate it on a data frame.
> 
> I know I could directly do:
> 
> df %>% dplyr::summarise(x1_mean = mean(x1))
> 
> but this is not what I'm looking for.
> 
> 
> library(dplyr)
> 
> df <- data.frame(x1 = rnorm(100), x2 = rnorm(100))
> 
> foo <- function(df) {
> 
>  mySummary <- quote(dplyr::summarise(x1_mean = mean(x1)))
> 
>  df %>% eval(mySummary)
> 
> }
> 
> foo(df)
> 
> Error in eval(., mySummary) : invalid 'envir' argument of type 'language'

You might get a more informative error message if you didn't use `df` as your local variable. It's the name of a function.

-- 
David.
> 
> Thank you,
> Axel.
> 
> 	[[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

'Any technology distinguishable from magic is insufficiently advanced.'   -Gehm's Corollary to Clarke's Third Law



More information about the R-help mailing list