Luke Tierney wrote:
R does not have macros.
Those are related -- because of lazy evaluation one does macros are
not needed to achive semantic goals (see for example tryCatch). Being
able to define friendlier syntax would sometimes be nice though (see
tryCatch again).
Also for some practical purposes. For instance, it is pretty hard to
loop over a set of variables and get the output labeled with the
variable names
for (y in list(systbt, diastbt)) plot (age, y)
will (of course) plot both with a y axis labeled "y". A macro version of
"for" could potentially create the expansion
plot(age, systbt)
plot(age, diastbt)
and evaluate the result. (Presumably, this is already possible with a
bit of sufficiently contorted code, but there's no user-friendly syntax
for it that I know of.)
In R, most data types (including numeric vectors) do not have a standard
external representation which can be read back in without evaluation.
The default print form is not readable in this sense but dput is
available for this purpose.
I think the point is that dput() is not always equivalent to the object
- parsing dput output gives a different object from the original.
Numeric vectors of length > 1 is the most obvious case, "expression"
objects another (those can get terribly confusing at times).
We currently have this sort of confusion
> e <- substitute(x+a,list(a=c(1,2,3)))
> e2 <- parse(text=deparse(e))[[1]]
> e2
x + c(1, 2, 3)
> e[[3]]
[1] 1 2 3
> e2[[3]]
c(1, 2, 3)
> dput(e)
x + c(1, 2, 3)
> dput(e2)
x + c(1, 2, 3)
That is, deparse/reparse of an object can lead to a _different_ object
that gets dput()'ed indistinguishably.
I have occasionally been wondering whether it would be a good idea to
have some sort of syntax primitive requesting parse-time evaluation. E.g.
quote(x + .const(c(1,2,3)))
would be equivalent to
substitute(x+a,list(a=c(1,2,3)))
--
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
~~~~~~~~~~ - ([EMAIL PROTECTED]) 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.