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.

Reply via email to