Ah whoops (and thank you).  I forgot to mention an additional
constraint: I'm trying to use exactly one eval statement.  Some
background information on this constraint.  Some of the expressions
that are being evaluated may return an error.  At the moment, I'm
wrapping each of the individual expressions inside a try-catch block
and an eval statement.  I was hoping to find a solution that uses a
single try-catch block and a single eval statement.  Today I realize
that a partial solution is to use a single try-catch block and
multiple eval statements, as has been suggested.  Here is the code
snippet, slightly updated:

symnames <- c('foo', 'bar', 'baz')
foo <- expression(1 + 2)
bar <- expression(3 + 4)
baz <- expression(abs('c'))
expr <- substitute(expr, list(expr = lapply(symnames, as.symbol)))
eval(expr)

Anybody know of a solution that uses a single eval expression?

--Michael

On Wed, Sep 16, 2009 at 1:31 AM, Schalk Heunis
<schalk.heu...@enerweb.co.za> wrote:
> Instead of eval(expr), use lapply(expr,eval)
> HTH
> Schalk Heunis
>
>
> On Wed, Sep 16, 2009 at 5:50 AM, Michael Spiegel
> <michael.m.spie...@gmail.com> wrote:
>>
>> Hi,
>>
>> I'm trying to use a list of symbols as one of the values to be
>> substituted in a substitute expression, but I can't figure out how to
>> write the correct expression for my problem.  Let me illustrate a
>> simple example of what I'm trying to do.  The following code snippet
>> will evaluate to '5':
>>
>> symname <- 'foo'
>> foo <- 5
>> expr <- substitute(c(expr), list(expr = as.symbol(symname)))
>> eval(expr)
>>
>> I would like the next similar example to evaluate to the list('5',
>> '6', '7'), but instead it evaluates to the list(foo, bar, baz) where
>> the type of foo, bar, and baz are all symbols.  For the purposes of
>> finding a solution assume that the length and contents of symnames are
>> unknown ahead of time (symname is not a constant, assume it is some
>> parameter to a function).
>>
>> symnames <- c('foo', 'bar', 'baz')
>> foo <- 5
>> bar <- 6
>> baz <- 7
>> expr <- substitute(expr, list(expr = lapply(symnames, as.symbol)))
>> eval(expr)
>>
>> Thanks!
>> --Michael
>>
>> ______________________________________________
>> 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.
>
>

______________________________________________
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