[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