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@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.dalga...@biostat.ku.dk)              FAX: (+45) 35327907

______________________________________________
R-help@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.

Reply via email to