Linux command

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Linux command

Tommi Viitanen
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
Reply | Threaded
Open this post in threaded view
|

Re: Linux command

Marc Schwartz (via MN)
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
Reply | Threaded
Open this post in threaded view
|

Re: Linux command

Pierre Kleiber
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