On Sun, 31 Jan 2010, Bert Gunter wrote:

(For R language geeks only)

Folks:

I think the best solution for the issue in the Subject line(see 29 January
thread on this for details) was the one Jennifer and Gabor previously
arrived at: (essentially)don't use R; instead, use a computer algebra system
that you can access through an R interface (e.g. Ryacas).

HOWEVER, I still wondered whether one could come up with a "simple" pure R
solution for simple but more general cases. What I offered previously was
too simple for the general case, as Gabor pointed out. It could do:

substitute the expression, "1/t" for "b" in the expression a*b;

but it could not descend further to handle:

substitute the expression, "1/t" for "b" in the expression a*b, where the
expression "sin(z+3)" is in turn to be substituted for t.

So I fooled with this a bit further and **think** (with trepidation) I found
that my previous approach does seem to extend to the general case by just
repeatedly processing the expression until done. One can even do this
without recursion (as it's tail recursion only) as follows (but see the
caveat below):

This is more or less what bquote() does, and it works, recursively, in a few 
lines of pure R (it just doesn't solve your particular problem because it 
substitutes for .() rather than for b).

    -thomas

Thomas Lumley                   Assoc. Professor, Biostatistics
tlum...@u.washington.edu        University of Washington, Seattle

______________________________________________
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