R statistics/Installation
First of all you need to install R onto your system.
R and many of its addon packages are pre-built and distributed through the CRAN network of mirrors. In addition many Linux distributions prepackage R and a number of the most popular addon toolboxes.
All the necessary functions for the GRASS 6 interface are now in packages on CRAN, so that on Linux/Unix (or Mac OSX) installing rgdal from source with PROJ4 and GDAL installed, or Windows installing from binary, the required packages are: sp; maptools (now includes spmaptools); rgdal (now includes spGDAL, spproj); spgrass6 - now all on CRAN.
Status of "spgrass" and "rgrass7" packages
See overview here: https://r-forge.r-project.org/R/?group_id=2020
Source packages
From the R console first pick a local mirror:
chooseCRANmirror()
you can then see what it picked with
options("repos")
To permanently save the mirror site add it to ~/.Rprofile. For example:
options(repos=c(CRAN="http://cran.stat.auckland.ac.nz"))
and then run install.packages() as in the Quick Start section above.
For more information see http://cran.r-project.org/doc/manuals/R-admin.html
Linux
Debian and Ubuntu
R and a number of pre-build cran packages are already present in the main repositories. Start with:
# apt-get install r-base r-cran-vr r-cran-rodbc r-cran-xml
Once those are installed start "R" at the command prompt and install the libraries not packaged by the OS:
- n.b. r-cran-sp is now shipped as an official Debian/Ubuntu package and can be installed with apt as above
install.packages("sp") install.packages("gstat")
Debian/Lenny ships with R 2.7.1 which is too old for the modern rgdal package. So we have to fetch an old one from the archive and build it from the Linux command line:
$ wget http://cran.r-project.org/src/contrib/Archive/rgdal/rgdal_0.6-24.tar.gz $ R CMD INSTALL -l /usr/local/lib/R/site-library rgdal_0.6-24.tar.gz
If you are using a newer version of R than that you can install the rgdal CRAN package directly:
install.packages("rgdal")
And finally, back inside the R session:
# in case of GRASS GIS 6 install.packages("spgrass6", dependencies = TRUE)
# in case of GRASS GIS 7 install.packages("rgrass7", dependencies = TRUE)
You can also use the CRAN Debian package repository: (pick one; adjust distribution as needed [here "Debian/testing"])
deb http://debian.cran.r-project.org/cran2deb/debian-i386 testing/ deb http://debian.cran.r-project.org/cran2deb/debian-amd64 testing/
RPM based
- RedHat, Fedora, openSuse, Mandriva and similar distros: take the latest R RPM and install it
R and a number of pre-build cran packages are already present in the main repositories. Start with:
# su # yum install R-core R-core-devel R-XML # exit
Once those are installed, start as normal user "R" at the command prompt and install the libraries not packaged by the distro provider:
R
# in case of GRASS GIS 6
install.packages("spgrass6", dependencies = TRUE)
# in case of GRASS GIS 7
install.packages("rgrass7", dependencies = TRUE)
Usage: You have the best user experience if you launch R within a running GRASS GIS session (then R automatically recognises the current settings of the Computational region and "sees" the GRASS maps).
Mac OSX
Start a R session, then
- for install.packages() you might have to rely on building packages from source code. try:
R
# in case of GRASS GIS 6
install.packages("spgrass6", type="source", dependencies = TRUE)
# in case of GRASS GIS 7
install.packages("rgrass7", type="source", dependencies = TRUE)
Startup of GRASS from within R:
First you need to find the path to the GRASS binaries: Control-click on the GRASS.app and you'll get a popup menu; select "Show Package Contents" - this opens you to the directory structure. Go to Contents->MacOS which would be "GISBASE"; So, in my case, the "gisBase" parameter is "/HD/Applications/Grass-6.4/Contents/MacOS". If you Command-click at the top of the window on the folder icon beside "MacOS" (from the line above this one), you can see the full path.
Now we can run GRASS from within a R session:
initGRASS(gisBase ='/Applications/GRASS/GRASS-6.4.app/Contents/MacOS',
location = 'geostat2012_ll', mapset = 'user1',
gisDbase = '/Users/Lars/Documents/Biologi/grassdata', override = TRUE)
Troubleshooting
If you get an error message when trying to call GRASS from R containing this line: dyld: Library not loaded: /usr/local/lib/libintl.8.dylib you need to establish a link from /Applications/Grass/GRASS-7.0.app/Contents/MacOS/lib/libintl.8.dylib to /usr/local/lib. This can be done through Terminal with the command:
sudo ln -s /Applications/Grass/GRASS-7.0.app/Contents/MacOS/lib/libintl.8.dylib /usr/local/lib/
Note: The path to the GRASS-x.x.app must reflect your own configuration.
MS Windows
Installation
Run:
# in case of GRASS GIS 6 install.packages("spgrass6", dependencies = TRUE)
# in case of GRASS GIS 7 install.packages("rgrass7", dependencies = TRUE)
or install Task View 'Spatial' - Analysis of Spatial Data
install.packages("ctv") library("ctv") install.views("Spatial")
GRASS 6: Calling R from GRASS
On Windows, the easiest way is calling R in a running GRASS 6 session by specifying the full path to the R startup executable. Note that all "\" must be changed to "/", furthermore quote white spaces in the path:
GRASS 6.4> C:/Users/"Catherine user"/Documents/R/R-2.15.1/bin/i386/R.exe R version 2.15.1 (2012-06-22) -- "Roasted Marshmallows" ... library(spgrass6)
In some cases, you can use this path:
- For 32 bits:
C:/"Program Files"/R/R-2.15.1/bin/i386/R.exe --save
- For 64 bits:
C:/"Program Files"/R/R-2.15.1/bin/x64/R.exe --save
The best solution is then to add this path to the %PATH% entry in the grass64.bat-starting script.
GRASS 6: calling GRASS from R
On Windows, the second easiest way is calling GRASS from R with initGRASS() from the R package spgrass6(). After GRASS has been initialized for R, you have access to GRASS commands from within R (you may need to adjust the path):
spgrass6() loc <- initGRASS("C:\\Program Files\\GRASS 6.4", home=tempdir())
or using an already existing mapset:
spgrass6() loc <- initGRASS(gisBase="C:\\Program Files\\GRASS 6.4", gisDbase = "'C:\\Users\\neteler\\Documents\\grassdata'", location = "spearfish60", mapset = "user1", SG="elevation.dem", override = TRUE)
For an example, see http://geomorphometry.org/content/geomorphometry-r-saga-ilwis-grass
GRASS 6 Usage III (taken from the grass-stats-ML)
http://lists.osgeo.org/pipermail/grass-stats/2010-September/001274.html
at the moment there is following for a Grass-R-connection implemented in WinGRASS 64
(1) the WinGrass64-installer searches during installation for a installed R and writes - if found - the R-installation-path to %PATH% in the grass64.bat-starting script (see http://trac.osgeo.org/grass/browser/grass/branches/develbranch_6/mswindows/GRASS-Installer.nsi#L660)
--> this means that you FIRST have to install R and then winGRASS!
(2) you can start "GRASS-command-line" - it's a windows-command-line, not a msys-rxvt-terminal (you can find this starting option under Programs -> GRASS64 -> Grass command line; but not as a desktop icon)
with this starting option you start a Grass-session in the good old text mode. if you type R in the command line, then you start R inside a GRASS-session like in Linux.
GRASS 7 Usage
In winGRASS 7 (standalone installer and OSGeo4W) the Windows batchfiles for use with R are now integrated for a smooth R-winGRASS-integration. The installation path of R and RStudio are dynamically loaded into PATH.
- Start winGRASS 7, bring the winGRASS-windows console in front and type R for opening a R-session (command line mode) inside a GRASS-session.
- Start WinGRASS 7, bring the winGRASS-windows console in front and type RGui for opening a R-session (GUI mode) inside a GRASS-session.