[R] What is the difference between expression and quote when used with eval()?
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Fri Feb 19 19:39:11 CET 2010
blue sky wrote:
> I made the following example to see what are the difference between
> expression and quote. But I don't see any difference when they are
> used with eval()? Could somebody let me know what the difference is
> between expression and quote?
Expressions are vectors of unevaluated expressions, so one difference is
that expressions can have more than one element.
Another difference is more subtle: objects of mode "expression" are
better at retaining their identity as an unevaluated expression
> eval(substitute(2+x,list(x=expression(pi))))
Error in 2 + expression(pi) : non-numeric argument to binary operator
> eval(substitute(2+x,list(x=quote(pi))))
[1] 5.141593
The really convincing application of this escapes me for the moment, but
the gist of it is that there are cases where a quoted expression may
blend in a bit too seemlessly when using computing on the language.
Also, expression objects are more easy to recognize programmeatically,
quote() may result in objects of mode "call", "name", or one of the base
classes.
-pd
>
> expr=expression(2*3)
> quo=quote(2*3)
>
> eval(expr)
> str(expr)
> class(expr)
> typeof(expr)
> mode(expr)
> attributes(expr)
>
> eval(quo)
> str(quo)
> class(quo)
> typeof(quo)
> mode(quo)
> attributes(quo)
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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.
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-help
mailing list