[R] eval(expr) without printing to screen?
David Winsemius
dwinsemius at comcast.net
Sat Sep 19 23:01:28 CEST 2009
On Sep 19, 2009, at 4:48 PM, Nick Matzke wrote:
> Hi,
>
> I have a script which I source, which evaluates a changing
> expression call hundreds of times. It works, but it prints to
> screen each time, which is annoying. There must be simple way to
> suppress this, or to use a slightly different set of commands, which
> will be obvious to those wiser than I...
>
>
> Here is a simpler mockup which shows the issue:
>
> x = data.frame(rbind(c(1,2,3),c(1,2,3)))
> xnames = c("a", "b", "c")
> names(x) = xnames
>
> for(i in 1:length(x))
> {
> # Create a varying string expression
> expr = paste("y = x$", xnames[i], "[1]", sep="")
>
> # evaluate expression
> eval(parse(text=print(expr)))
Why are you printing expr? Seems that you are making it difficult to
achieve your goal of quiet execution if you print the expressions
inside the parse function.
>
> # This command prints the expression to screen even when embedded in
> a function in a sourced script. I would prefer it didn't!
> }
>
>
> PS: I have to go through this rigamarole:
>
> expr = "y1 = x$c[1]"
> eval(parse(text=print(expr)))
>
> Because the following doesn't work, even though it seems like it
> should:
> expr = "y = x$c[2]"
> eval(expr)
>
--
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
More information about the R-help
mailing list