R
From FarmShare
Contents |
Looking at installed packages
You can see the list of installed R libraries by the library() call in R
library();
We have a lot of packages already installed, you can ask us to install more, or just install them quickly in your homedir.
Which R are you using?
Try run
which R
Try run
R --version
Installing CRAN Packages
Most CRAN packages can be installed per-user by running install.packages() in an interactive session:
install.packages("package_name", dependencies = TRUE)
R initially attempts to install to /usr/local/lib/R, and you don't have permissions to write there, so it will prompt for the creation of a library subdirectory in ~/R (if necessary) and fall back to installation there when the initial attempt fails. If your package requires dependencies available from the standard Ubuntu repositories you can e-mail us requesting installation. We can install from the Debian/Ubuntu package repositories or into the shared FarmShare filesystem.
You can, of course, install R libraries into any arbitrary path and just add that path to your R env. That will probably break the next time R is upgraded to a new version, since your packages are built with the older version.
NOTE: when you install a package in corn, it will be available to you in Barley.
R Sample Job
Here's an example R file that generates a large array, fills it with some random numbers, then sleeps for 5mins. This happens to use up almost exactly 8GB of RAM.
Save this as 8GB.R:
x <- array(1:1073741824, dim=c(1024,1024,1024)) x <- gaussian() Sys.sleep(300)
Here's an example SGE submit script that runs that R file.
#!/bin/bash # use the current directory #$ -cwd #$ -S /bin/bash # mail this address #$ -M chekh@stanford.edu # send mail on begin, end, suspend #$ -m bes R --vanilla --no-save < 8GB.R
You can submit it with just
qsub r_test.script
Here are the output files that I get, one from stderr, one from stdout
$ cat r_test.script.o497 R version 2.12.1 (2010-12-16) Copyright (C) 2010 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > x <- array(1:1073741824, dim=c(1024,1024,1024)) > x <- gaussian() > Sys.sleep(300) >
Another R Sample Job
R script, let's call it R-rjags.R
print("Hello World") library(rjags) #this just loaded some settings from that library print("Finished")
Job script, let's call it R-jags.submit.script
#!/bin/bash # use the current directory #$ -cwd #$ -S /bin/bash # mail this address #$ -M chekh@stanford.edu # send mail on begin, end, suspend #$ -m bes R --vanilla --no-save < R-jags.R
Submit it to the test queue with a small memory requirement:
qsub -l mem_free=200M -l testq=1 R-jags.submit.script
Looking at the output files, it errored out because R can't find the package rjags. You have two alternatives:
- include the R library from /mnt/glusterfs/software
- use modules to specify the full R install from /mnt/glusterfs/software
The first way, you would add this line to your R script:
.libPaths(c("/mnt/glusterfs/software/free/R-2.15.0/lib/R/library", "/usr/lib/R/library"))
The second way, your script will look like this:
$ cat R-jags.submit.script #!/bin/bash # use the current directory #$ -cwd #$ -S /bin/bash # mail this address #$ -M chekh@stanford.edu # send mail on begin, end, suspend #$ -m bes eval `tclsh /mnt/glusterfs/software/free/modules/tcl/modulecmd.tcl sh autoinit` module load R-2.15.0 R --vanilla --no-save < R-jags.R
Links
Some other departments have some other more detailed examples:
- http://wiki.genomics.upenn.edu/index.php/HPC:ExamplesR
- http://me.eng.uab.edu/wiki/index.php?title=R-userinfo
- https://www.stanford.edu/dept/statistics/cgi-bin/projects/stat-sysadminwiki/index.php/R_Jobs
- http://www.glennklockwood.com/di/R-para.php
building our local R
Here's how I usually do it.
- cd /mnt/glusterfs/software/free
- wget http://cran.cnr.berkeley.edu/src/base/R-2/R-2.15.1.tar.gz
- tar zxvf R-2.15.1.tar.gz
- cd R-2.15.1
- ./configure --enable-R-shlib
- make
- don't "make install"
- write new FarmShare module, e.g. /mnt/glusterfs/software/free/modules/tcl/modulefiles/R-2.15.1
2014-07-10
R 3.1.1 released today, I compiled it as chekh on corn40 (Ubuntu 13.10)
- cd /farmshare/software/free/r
- wget http://cran.cnr.berkeley.edu/src/base/R-3/R-3.1.1.tar.gz
- cd R-3.1.1
- ./configure --enable-R-shlib
R is now configured for x86_64-unknown-linux-gnu Source directory: . Installation directory: /usr/local C compiler: gcc -std=gnu99 -g -O2 Fortran 77 compiler: gfortran -g -O2 C++ compiler: g++ -g -O2 C++ 11 compiler: g++ -std=c++11 -g -O2 Fortran 90/95 compiler: gfortran -g -O2 Obj-C compiler: gcc -g -O2 -fobjc-exceptions Interfaces supported: X11, tcltk External libraries: readline, ICU, lzma Additional capabilities: PNG, JPEG, TIFF, NLS, cairo Options enabled: shared R library, shared BLAS, R profiling Recommended packages: yes
- make
- write /farmshare/software/mf/saucy/r/3.1.1.lua
lapack issues
If you see messages like:
unable to load shared object '/usr/lib/R/modules//lapack.so':
most likely you're mixing R versions and libraries.
Double check that you are not setting R library path to point to directories with older libraries.
This test script should run fine if you have everything set correctly
$ cat lapack.r data(iris) zz = lm(Sepal.Length ~., data = iris) summary(zz) $ R --no-save < lapack.r