[R] Linux command
Pierre Kleiber
pkleiber at hawaii.rr.com
Wed Dec 21 04:16:29 CET 2005
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
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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: pkleiber at honlab.nmfs.hawaii.edu
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."
More information about the R-help
mailing list