On Sep 9, 2014, at 4:07 PM, peter dalgaard wrote:
On 07 Sep 2014, at 00:31 , David Winsemius <dwinsem...@comcast.net>
wrote:
The goal:
to create a function modeled after `subset` (notorious for its non-
standard evaluation) that will take a series of logical tests as
unquoted expressions to be evaluated in the framework of a
dataframe environment and return a dataframe of logicals:
...
A belated peep from the author of subset(): Don't!
I think we learned the hard way by now that it is much easier to
pass unevaluated expressions in the shape of formula objects or
maybe expression objects. Lots of pain can be avoided by slipping in
a simple "~".
It's taken me several years to understand why you are probably correct
in this regard. I needed to learn that `~` is actually a function that
creates a language object.
> is.function(`~`)
[1] TRUE
> is.language( ~ x > 5 & x < 10)
[1] TRUE
... and that it's rather easy to extract the object somewhat like but
not really an expression embedded in such an object:
> is.expression( ~ x > 5 & x < 10)
[1] FALSE
> is.call( (~ x > 5 & x < 10)[2] )
[1] TRUE
The task of learning the various types of language objects is not an
easy one.
--
David Winsemius, MD
Alameda, CA, USA
______________________________________________
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.