[R] formula argument evaluation
William Dunlap
wdunlap at tibco.com
Wed Apr 13 17:03:55 CEST 2016
%=>% would have precendence ('order of operations') problems also.
A + B %=>% C
is equivalent to
A + ( B %=>% C)
and I don't think that is what you want.
as.list(quote(A + B %=>% C)) shows the first branch in the parse tree. The
following function, str.language, shows the entire parse tree, as in
> str.language(quote(A + B %=>% C))
`quote(A + B %=>% C)` call(3): A + B %=>% C
`` name(1): +
`` name(1): A
`` call(3): B %=>% C
`` name(1): %=>%
`` name(1): B
`` name(1): C
str.language <-
function (object, ..., level = 0, name = myDeparse(substitute(object)))
{
abbr <- function(string, maxlen = 25) {
if (length(string) > 1 || nchar(string) > maxlen)
paste(substring(string[1], 1, maxlen), "...", sep = "")
else string
}
myDeparse <- function(object) {
if (!is.environment(object)) {
deparse(object)
}
else {
ename <- environmentName(object)
if (ename == "")
ename <- "<unnamed env>"
paste(sep = "", "<", ename, "> ", paste(collapse = " ",
objects(object)))
}
}
cat(rep(" ", level), sep = "")
if (is.null(name))
name <- ""
cat(sprintf("`%s` %s(%d): %s\n", abbr(name), class(object),
length(object), abbr(myDeparse(object))))
a <- attributes(object)
if (is.recursive(object) && !is.environment(object)) {
object <- as.list(object)
names <- names(object)
for (i in seq_along(object)) {
str.language(object[[i]], ..., level = level + 1,
name = names[i])
}
}
a$names <- NULL
if (length(a) > 0) {
str.language(a, level = level + 1, name = paste("Attributes of",
abbr(name)))
}
}
Bill Dunlap
TIBCO Software
wdunlap tibco.com
On Tue, Apr 12, 2016 at 11:59 PM, Adrian Dușa <dusa.adrian at unibuc.ro> wrote:
> I suppose it would work, although "=>" is rather a descriptive symbol and
> less a function.
> But choosing between quoting:
> "A + B => C"
> and a regular function:
> A + B %=>% C
> probably quoting is the most straightforward, as the result of the foo()
> function has to be a string anyways (which is parsed by other functions).
>
> On Tue, Apr 12, 2016 at 6:20 PM, Richard M. Heiberger <rmh at temple.edu>
> wrote:
>
> > Would making it regular function %=>%, using "%" instead of quotes,
> > work for you?
> >
> > On Tue, Apr 12, 2016 at 11:09 AM, Adrian Dușa <dusa.adrian at unibuc.ro>
> > wrote:
> > > On Tue, Apr 12, 2016 at 2:08 PM, Duncan Murdoch <
> > murdoch.duncan at gmail.com>
> > > wrote:
> > >> [...]
> > >>
> > >> It never gets to evaluating it. It is not a legal R statement, so the
> > > parser signals an error.
> > >> If you want to pass arbitrary strings to a function, you need to put
> > them
> > > in quotes.
> > >
> > > I see. I thought it was parsed inside the function, but if it's parsed
> > > before then quoting is the only option.
> > >
> > >
> > > To Keith: no, I mean it like this "A + B => C" which is translated as:
> > > "the union of A and B is sufficient for C" in set theoretic language.
> > >
> > > The "=>" operator means sufficiency, while "<=" means necessity.
> Quoting
> > > the expression is good enough, I was just curious if the quotes could
> be
> > > made redundant, somehow.
> > >
> > > Thank you both,
> > > Adrian
> > >
> > > --
> > > Adrian Dusa
> > > University of Bucharest
> > > Romanian Social Data Archive
> > > Soseaua Panduri nr.90
> > > 050663 Bucharest sector 5
> > > Romania
> > >
> > > [[alternative HTML version deleted]]
> > >
> > > ______________________________________________
> > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > > 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.
> >
>
>
>
> --
> Adrian Dusa
> University of Bucharest
> Romanian Social Data Archive
> Soseaua Panduri nr.90
> 050663 Bucharest sector 5
> Romania
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
[[alternative HTML version deleted]]
More information about the R-help
mailing list