On 7/31/2008 2:08 PM, Ken Williams wrote:


On 7/31/08 11:01 AM, "hadley wickham" <[EMAIL PROTECTED]> wrote:

I think that would be a very hard task -

Well, at least medium-hard.  But I think significant automatic steps could
be made, and then a human can take over for the last few steps.  That's why
I was enquiring about "tools" rather than a complete solution.

Does R provide facilities for introspection or interrogation of expression
objects?  I couldn't find anything useful on first look:

You can index an expression as a list:

> e <- expression(foo <- 5 * bar)
>
> e[[1]]
foo <- 5 * bar
> str(e[[1]])
 language foo <- 5 * bar

expression() returns a list of language objects, and we only asked for one. We can look inside it:

> e[[1]][[1]]
`<-`

The as.list function is also useful:

> as.list(e[[1]])
[[1]]
`<-`

[[2]]
foo

[[3]]
5 * bar

and proceed recursively:

> as.list(e[[1]][[3]])
[[1]]
`*`

[[2]]
[1] 5

[[3]]
bar


Duncan Murdoch

>
>> methods(class="expression")
> no methods were found
>> dput(expression(foo  <- 5 * bar))
> expression(foo <- 5 * bar)
>> str(expression(foo <- 5 * bar))
>   expression(foo <- 5 * bar)
>
>
>> it's equivalent to taking a
>> long rambling conversation and then automatically turning it into a
>> concise summary of what was said.  I think you must have human
>> intervention.
>
> It's not really equivalent, natural language has ambiguities and subtleties
> that computer languages, especially functional languages, intentionally
> don't have.  By their nature, computer languages can be turned into parse
> trees unambiguously and then those trees can be manipulated.
>
> But coincidentally I work in a Natural Language Processing group, and one of
> the things we do is create exactly the kind of concise summaries you
> describe. =)
>

______________________________________________
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