On Mar 28, 2011, at 11:32 AM, William Dunlap wrote:
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Jack Tanner
Sent: Sunday, March 27, 2011 9:14 PM
To: [email protected]
Subject: Re: [R] altering a "call" variable from quote()
Jack Tanner <ihok <at> hotmail.com> writes:
b = quote(b==3)
Now I want to append "&& x > 2" to the value of b. How do I do that?
Never mind, I figured it out:
substitute(b && x > 2, list(b=b))
You can also use call() or as.call():
e1 <- substitute(b && x > 2, list(b=b))
e2 <- call("&&", b, quote(x>2))
e3 <- as.call(list(quote(`&&`), b, quote(x>2)))
identical(e1,e2) && identical(e1,e3)
[1] TRUE
substitute can be a pain when the first argument is not
a literal expression.
Or `bquote`:
b = quote(b==3)
bquote(.(b) && x > 2)
# b == 3 && x > 2
> identical(e1,e2) &&
+ identical(e1,e3) &&
+ identical(e1, bquote(.(b) && x > 2) )
[1] TRUE
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
David Winsemius, MD
West Hartford, CT
______________________________________________
[email protected] 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.