I wonder if it's possible to run R-functions or other commands
automatically by some shell-script in Linux shell. I thought that something like $ R mean(c(1,2)) $ R xy.Rdata would work, but I havent found the right way. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html |
On Tue, 2005-12-20 at 02:14 +0200, Tommi Viitanen wrote:
> I wonder if it's possible to run R-functions or other commands > automatically by some shell-script in Linux shell. > > I thought that something like > $ R mean(c(1,2)) > $ R xy.Rdata > would work, but I havent found the right way. There is some documentation in 'An Introduction to R', Appendix B "Invoking R" which is available with the R installation and/or from the main R web site under Documentation. There is also help available via 'man R' from the Linux console. If you are just passing your first line to R, you can do something like this: $ echo "mean(c(1,2))" | R --slave --vanilla [1] 1.5 This echos the R command string and pipes it as stdin to R. The additional arguments make the interaction with R more streamlined and are documented in the aforementioned references. You can also pass a text file containing more complex R commands: R --slave --vanilla < RCommandFile.txt If I have the following in the file: # Example from ?lm ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) group <- gl(2,10,20, labels=c("Ctl","Trt")) weight <- c(ctl, trt) anova(lm.D9 <- lm(weight ~ group)) I can then do: $ R --slave --vanilla < RCommandFile.txt Analysis of Variance Table Response: weight Df Sum Sq Mean Sq F value Pr(>F) group 1 0.6882 0.6882 1.4191 0.249 Residuals 18 8.7293 0.4850 And you can of course re-direct the output: R --slave --vanilla < RCommandFile.txt > Outfile.txt HTH, Marc Schwartz ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html |
In LINUX and other unixes you can also put your R commands in a so-called "here
file", which resides within the script file that calls R; so you don't need two separate files. Taking Marc Schwartz' example, you could have make the following script file (call it say "tsst"): #!/bin/sh R --slave --vanilla <<XXXX # Example from ?lm ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) group <- gl(2,10,20, labels=c("Ctl","Trt")) weight <- c(ctl, trt) anova(lm.D9 <- lm(weight ~ group)) XXXX Then do: chmod +x tsst ./tsst The here file is the part between <<XXXX and XXXX. Also, arguments to the script are interpretable within the here file. So for example: #!/bin/sh R --slave --vanilla <<YYY tt <- scan("$1") print(mean(tt)) YYY would read data from a file given as an argument in calling the script. Cheers, Pierre Marc Schwartz offered the following remark on 12/19/05 14:43... > On Tue, 2005-12-20 at 02:14 +0200, Tommi Viitanen wrote: > >>I wonder if it's possible to run R-functions or other commands >>automatically by some shell-script in Linux shell. >> >>I thought that something like >>$ R mean(c(1,2)) >>$ R xy.Rdata >>would work, but I havent found the right way. > > > There is some documentation in 'An Introduction to R', Appendix B > "Invoking R" which is available with the R installation and/or from the > main R web site under Documentation. There is also help available via > 'man R' from the Linux console. > > If you are just passing your first line to R, you can do something like > this: > > $ echo "mean(c(1,2))" | R --slave --vanilla > [1] 1.5 > > > This echos the R command string and pipes it as stdin to R. > > The additional arguments make the interaction with R more streamlined > and are documented in the aforementioned references. > > You can also pass a text file containing more complex R commands: > > R --slave --vanilla < RCommandFile.txt > > > If I have the following in the file: > > # Example from ?lm > ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) > trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) > group <- gl(2,10,20, labels=c("Ctl","Trt")) > weight <- c(ctl, trt) > anova(lm.D9 <- lm(weight ~ group)) > > > I can then do: > > $ R --slave --vanilla < RCommandFile.txt > Analysis of Variance Table > > Response: weight > Df Sum Sq Mean Sq F value Pr(>F) > group 1 0.6882 0.6882 1.4191 0.249 > Residuals 18 8.7293 0.4850 > > > And you can of course re-direct the output: > > R --slave --vanilla < RCommandFile.txt > Outfile.txt > > > HTH, > > Marc Schwartz > > ______________________________________________ > [hidden email] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > -- ----------------------------------------------------------------- Pierre Kleiber, Ph.D Email: [hidden email] Fishery Biologist Tel: 808 983-5399 / (hm)808 737-7544 NOAA Fisheries Service - Honolulu Laboratory Fax: 808 983-2902 2570 Dole St., Honolulu, HI 96822-2396 ----------------------------------------------------------------- "God could have told Moses about galaxies and mitochondria and all. But behold... It was good enough for government work." ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html |
Free forum by Nabble | Edit this page |