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))) # 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) -- ===================================================Nicholas J. Matzke Ph.D. Candidate, Graduate Student Researcher Huelsenbeck Lab Center for Theoretical Evolutionary Genomics 4151 VLSB (Valley Life Sciences Building) Department of Integrative Biology University of California, Berkeley Lab websites: http://ib.berkeley.edu/people/lab_detail.php?lab=54 http://fisher.berkeley.edu/cteg/hlab.html Dept. personal page: http://ib.berkeley.edu/people/students/person_detail.php?person=370 Lab personal page: http://fisher.berkeley.edu/cteg/members/matzke.html Lab phone: 510-643-6299 Dept. fax: 510-643-6264 Cell phone: 510-301-0179 Email: matzke at berkeley.edu Mailing address: Department of Integrative Biology 3060 VLSB #3140 Berkeley, CA 94720-3140 ----------------------------------------------------- "[W]hen people thought the earth was flat, they were wrong. When people thought the earth was spherical, they were wrong. But if you think that thinking the earth is spherical is just as wrong as thinking the earth is flat, then your view is wronger than both of them put together." Isaac Asimov (1989). "The Relativity of Wrong." The Skeptical Inquirer, 14(1), 35-44. Fall 1989. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
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
Hi, What about this, eval(parse(text=expr)) (no print) HTH, baptiste 2009/9/19 Nick Matzke <matzke at berkeley.edu>:> 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))) > > # 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) > > > > > -- > ===================================================> Nicholas J. Matzke > Ph.D. Candidate, Graduate Student Researcher > Huelsenbeck Lab > Center for Theoretical Evolutionary Genomics > 4151 VLSB (Valley Life Sciences Building) > Department of Integrative Biology > University of California, Berkeley > > Lab websites: > http://ib.berkeley.edu/people/lab_detail.php?lab=54 > http://fisher.berkeley.edu/cteg/hlab.html > Dept. personal page: > http://ib.berkeley.edu/people/students/person_detail.php?person=370 > Lab personal page: http://fisher.berkeley.edu/cteg/members/matzke.html > Lab phone: 510-643-6299 > Dept. fax: 510-643-6264 > Cell phone: 510-301-0179 > Email: matzke at berkeley.edu > > Mailing address: > Department of Integrative Biology > 3060 VLSB #3140 > Berkeley, CA 94720-3140 > > ----------------------------------------------------- > "[W]hen people thought the earth was flat, they were wrong. When people > thought the earth was spherical, they were wrong. But if you think that > thinking the earth is spherical is just as wrong as thinking the earth is > flat, then your view is wronger than both of them put together." > > Isaac Asimov (1989). "The Relativity of Wrong." The Skeptical Inquirer, > 14(1), 35-44. Fall 1989. > http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm > > ______________________________________________ > R-help at 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. >
> 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))) > > # This command prints the expression to screen even when embedded in a > function in a sourced script. ?I would prefer it didn't! > }Why are you using eval? The following is equivalent: for(name in names(x)) { y <- x[[name]][1] } Hadley -- http://had.co.nz/