R statistics: Difference between revisions

From GRASS-Wiki
Jump to navigation Jump to search
(updated to F33+)
(rgrass7 --> rgrass)
Line 3: Line 3:
=== Overview ===
=== Overview ===


High quality statistic analysis in GRASS GIS is possible thanks to an interface to one of the most powerful statistics analysis package around: '''''R''''' ([http://www.r-project.org/ http://www.r-project.org]). This R ←→ GRASS GIS interface is provided by the [https://cran.r-project.org/package=rgrass7 rgrass7] ''R'' addon package. The possibility to directly interact with R strongly increases the statistical and geospatial analysis capabilities of GRASS. See [https://cran.r-project.org/web/views/Spatial.html CRAN Task View: Analysis of Spatial Data] for an overview of the R packages and functions that can be used for reading, visualizing, and analyzing spatial data.   
High quality statistic analysis in GRASS GIS is possible thanks to an interface to one of the most powerful statistics analysis package around: '''''R''''' ([http://www.r-project.org/ http://www.r-project.org]). This R ←→ GRASS GIS interface is provided by the [https://cran.r-project.org/package=rgrass rgrass] ''R'' addon package. The possibility to directly interact with R strongly increases the statistical and geospatial analysis capabilities of GRASS. See [https://cran.r-project.org/web/views/Spatial.html CRAN Task View: Analysis of Spatial Data] for an overview of the R packages and functions that can be used for reading, visualizing, and analyzing spatial data.   


R can be used in conjunction with GRASS GIS in different ways:
R can be used in conjunction with GRASS GIS in different ways:


* ''Running R 'on top of' GRASS'', transferring GRASS data to R to run statistical functions on the imported data as R objects in memory, and possibly transfer the results back to GRASS. GRASS raster and vector data can be imported in R using the [https://rdrr.io/rforge/rgrass7/man/readVECT.html readVECT()] and [https://rdrr.io/rforge/rgrass7/man/readRAST.html readRAST()] function provided by [http://cran.r-project.org/web/packages/rgrass7/ rgrass7]. Similarly, results can be written back using the [https://rdrr.io/rforge/rgrass7/man/readRAST.html writeRAST()] and [https://rdrr.io/rforge/rgrass7/man/readVECT.html writeVECT()] functions.
* ''Running R 'on top of' GRASS'', transferring GRASS data to R to run statistical functions on the imported data as R objects in memory, and possibly transfer the results back to GRASS. GRASS raster and vector data can be imported in R using the [https://search.r-project.org/CRAN/refmans/rgrass/html/readVECT.html readVECT()] and [https://search.r-project.org/CRAN/refmans/rgrass/html/readRAST.html readRAST()] function provided by [http://cran.r-project.org/web/packages/rgrass/ rgrass]. Similarly, results can be written back using the [https://search.r-project.org/CRAN/refmans/rgrass/html/readRAST.html writeRAST()] and [https://search.r-project.org/CRAN/refmans/rgrass/html/readVECT.html writeVECT()] functions.
* ''Using R as a scripting language in GRASS''. GRASS functions can be run from R using the [https://rdrr.io/rforge/rgrass7/man/execGRASS.html execGRASS()] function in the ''rgrass7'' package. R scripting tools, such as powerful string-processing tools and functions for manipulating file names, can be used to 'glue' different functions and tools together.
* ''Using R as a scripting language in GRASS''. GRASS functions can be run from R using the [https://search.r-project.org/CRAN/refmans/rgrass/html/execGRASS.html execGRASS()] function in the ''rgrass'' package. R scripting tools, such as powerful string-processing tools and functions for manipulating file names, can be used to 'glue' different functions and tools together.
* ''Using GRASS GIS as a geospatial library in R''. GRASS GIS can be used to extent the geospatial capability of R by: (1) offering an extensive and robust set of geospatial tools, and (2) provides a way to work with very large (larger-than-memory) spatial data sets. See Using 'GRASS GIS functionality within a R session' below for more information.
* ''Using GRASS GIS as a geospatial library in R''. GRASS GIS can be used to extent the geospatial capability of R by: (1) offering an extensive and robust set of geospatial tools, and (2) provides a way to work with very large (larger-than-memory) spatial data sets. See Using 'GRASS GIS functionality within a R session' below for more information.


Line 23: Line 23:
(see also [[R statistics/Installation]])
(see also [[R statistics/Installation]])


''Note: the ...-devel packages are needed if you want to install extra packages incl. '''rgrass7''' on your computer.''
''Note: the ...-devel packages are needed if you want to install extra packages incl. '''rgrass''' on your computer.''


Fedora:
Fedora:
   sudo dnf install R-core
   sudo dnf install R-core
   # further packages needed in order to locally compile "rgrass7"
   # further packages needed in order to locally compile "rgrass"
   # F29
   # F29
   sudo dnf install proj-epsg proj-nad proj-devel gdal-devel sqlite-devel xml2 libxml2-devel R-core-devel udunits2-devel
   sudo dnf install proj-epsg proj-nad proj-devel gdal-devel sqlite-devel xml2 libxml2-devel R-core-devel udunits2-devel
Line 35: Line 35:
Ubuntu:
Ubuntu:
   sudo apt-get install r-base
   sudo apt-get install r-base
   # further packages needed in order to locally compile "rgrass7"
   # further packages needed in order to locally compile "rgrass"
   sudo apt-get install proj-bin proj-data libproj-dev libgdal-dev libsqlite3-dev libxml2-dev r-base-dev
   sudo apt-get install proj-bin proj-data libproj-dev libgdal-dev libsqlite3-dev libxml2-dev r-base-dev


==== Installation of the rgrass7 package  ====
==== Installation of the rgrass package  ====
To install the R package '''rgrass7''' on newer versions of R, you simply start R and install the package directly with:
To install the R package '''rgrass''' on newer versions of R, you simply start R and install the package directly with:


<source lang="rsplus">
<source lang="rsplus">
install.packages("rgrass7", dependencies = TRUE)
install.packages("rgrass", dependencies = TRUE)
</source>
</source>


This will install '''''rgrass7''''' and all its dependencies. To use the package, you first need to load it:
This will install '''''rgrass''''' and all its dependencies. To use the package, you first need to load it:


<source lang="rsplus">
<source lang="rsplus">
library("rgrass7")
library("rgrass")
</source>
</source>


If you are using Rstudio, you can install the rgrass7 package in the usual way (tool → packages). For further instructions and for trouble shooting, see [[R_statistics/Installation]]
If you are using Rstudio, you can install the rgrass package in the usual way (tool → packages). For further instructions and for trouble shooting, see [[R_statistics/Installation]]


=== How to use ===
=== How to use ===
Line 59: Line 59:
==== Using R within a GRASS GIS session ====
==== Using R within a GRASS GIS session ====


If you are primarily a GIS user who wants to run e.g., some statistical tests not available in GRASS, you probably want to run R from within a GRASS GIS session. To do so, first start GRASS GIS and then start R (or RStudio) from the GRASS GIS command line. For more information and examples, see [[R_statistics/rgrass7]].  
If you are primarily a GIS user who wants to run e.g., some statistical tests not available in GRASS, you probably want to run R from within a GRASS GIS session. To do so, first start GRASS GIS and then start R (or RStudio) from the GRASS GIS command line. For more information and examples, see [[R_statistics/rgrass]].  


==== Using GRASS GIS functionality within a R session ====
==== Using GRASS GIS functionality within a R session ====


If you are primarily a R user, who wants to take advantage of the advanced geospatial functions in GRASS, you probably want to use GRASS GIS within a R session. To connect to a GRASS GIS database from within R (or Rstudio), see the instructions on [[R_statistics/rgrass7]]. If you are a first time GRASS GIS User, you may want to check out the information for [https://grass.osgeo.org/grass7/ first time users] first.
If you are primarily a R user, who wants to take advantage of the advanced geospatial functions in GRASS, you probably want to use GRASS GIS within a R session. To connect to a GRASS GIS database from within R (or Rstudio), see the instructions on [[R_statistics/rgrass]]. If you are a first time GRASS GIS User, you may want to check out the information for [https://grass.osgeo.org/grass7/ first time users] first.


=== Examples ===
=== Examples ===
Line 75: Line 75:


==== Manual pages ====
==== Manual pages ====
If you are in R and have loaded the rgrass7 package, you can get the help page of ''rgrass7'' by typing:
If you are in R and have loaded the rgrass package, you can get the help page of ''rgrass'' by typing:


<source lang="rsplus">
<source lang="rsplus">
?rgrass7
?rgrass
</source>
</source>


Line 93: Line 93:
</source>
</source>


Now, to get the information about the package, select the '''Packages''' entry and then '''rgrass7'''.  
Now, to get the information about the package, select the '''Packages''' entry and then '''rgrass'''.  


==== Support from the community ====
==== Support from the community ====


Primary support for ''R'' + GRASS and the ''rgrass7'' package is through the [http://lists.osgeo.org/mailman/listinfo/grass-stats grass-stats] mailing list.
Primary support for ''R'' + GRASS and the ''rgrass'' package is through the [http://lists.osgeo.org/mailman/listinfo/grass-stats grass-stats] mailing list.


=== Useful links ===
=== Useful links ===

Revision as of 07:22, 22 October 2022

Overview

High quality statistic analysis in GRASS GIS is possible thanks to an interface to one of the most powerful statistics analysis package around: R (http://www.r-project.org). This R ←→ GRASS GIS interface is provided by the rgrass R addon package. The possibility to directly interact with R strongly increases the statistical and geospatial analysis capabilities of GRASS. See CRAN Task View: Analysis of Spatial Data for an overview of the R packages and functions that can be used for reading, visualizing, and analyzing spatial data.

R can be used in conjunction with GRASS GIS in different ways:

  • Running R 'on top of' GRASS, transferring GRASS data to R to run statistical functions on the imported data as R objects in memory, and possibly transfer the results back to GRASS. GRASS raster and vector data can be imported in R using the readVECT() and readRAST() function provided by rgrass. Similarly, results can be written back using the writeRAST() and writeVECT() functions.
  • Using R as a scripting language in GRASS. GRASS functions can be run from R using the execGRASS() function in the rgrass package. R scripting tools, such as powerful string-processing tools and functions for manipulating file names, can be used to 'glue' different functions and tools together.
  • Using GRASS GIS as a geospatial library in R. GRASS GIS can be used to extent the geospatial capability of R by: (1) offering an extensive and robust set of geospatial tools, and (2) provides a way to work with very large (larger-than-memory) spatial data sets. See Using 'GRASS GIS functionality within a R session' below for more information.

In practice, one will often combine different approaches, with scripts running GRASS functions, importing resulting layers in R for further analysis and visualization, and creating new layers in R that are imported back in GRASS.

Current State

R Windows binary packages distributed by the Comprehensive R Archive Network (CRAN) using OSGeo software (chiefly PROJ, GDAL and GEOS) use custom built binaries compatible with the build train used by R and are static linked; at present both 32-bit and 64-bit binaries are deployed. CRAN packages for macOS are also static linked to custom built binaries, again using the build train used by R. Static linkage is used to avoid having to deploy a package manager for external software on which R packages depend, since CRAN as a package manager already supports over 15000 packages with three binary versions (devel, release, old release) for Windows and macOS.

Installation

Installation of R core software

(see also R statistics/Installation)

Note: the ...-devel packages are needed if you want to install extra packages incl. rgrass on your computer.

Fedora:

 sudo dnf install R-core
 # further packages needed in order to locally compile "rgrass"
 # F29
 sudo dnf install proj-epsg proj-nad proj-devel gdal-devel sqlite-devel xml2 libxml2-devel R-core-devel udunits2-devel
 # F33+
 sudo dnf install proj-devel proj-datumgrid proj-datumgrid-europe proj-datumgrid-north-america proj-datumgrid-world proj-datumgrid-oceania gdal-devel sqlite-devel xml2 libxml2-devel R-core-devel udunits2-devel

Ubuntu:

 sudo apt-get install r-base
 # further packages needed in order to locally compile "rgrass"
 sudo apt-get install proj-bin proj-data libproj-dev libgdal-dev libsqlite3-dev libxml2-dev r-base-dev

Installation of the rgrass package

To install the R package rgrass on newer versions of R, you simply start R and install the package directly with:

install.packages("rgrass", dependencies = TRUE)

This will install rgrass and all its dependencies. To use the package, you first need to load it:

library("rgrass")

If you are using Rstudio, you can install the rgrass package in the usual way (tool → packages). For further instructions and for trouble shooting, see R_statistics/Installation

How to use

You can use Using R in conjunction with GRASS GIS in two different ways: (1) run R within a GRASS GIS session, and (2) run GRASS GIS within a R session.

Using R within a GRASS GIS session

If you are primarily a GIS user who wants to run e.g., some statistical tests not available in GRASS, you probably want to run R from within a GRASS GIS session. To do so, first start GRASS GIS and then start R (or RStudio) from the GRASS GIS command line. For more information and examples, see R_statistics/rgrass.

Using GRASS GIS functionality within a R session

If you are primarily a R user, who wants to take advantage of the advanced geospatial functions in GRASS, you probably want to use GRASS GIS within a R session. To connect to a GRASS GIS database from within R (or Rstudio), see the instructions on R_statistics/rgrass. If you are a first time GRASS GIS User, you may want to check out the information for first time users first.

Examples

Getting help

Manual pages

If you are in R and have loaded the rgrass package, you can get the help page of rgrass by typing:

?rgrass

Similarly, to get help for a specific function, e.g., for the function readRAST(), you type:

?readRAST

You can also start the R help page in your browser:

help.start()

Now, to get the information about the package, select the Packages entry and then rgrass.

Support from the community

Primary support for R + GRASS and the rgrass package is through the grass-stats mailing list.

Useful links

R

Related

Articles & books

Older (but still useful) links

Note for users of the legacy GRASS GIS 6

If you are still using GRASS GIS 6, see R_statistics/spgrass6 for instructions and examples of using GRASS GIS in conjunction with R. However, you are strongly encouraged to upgrade to GRASS GIS 7. Not only does it offer many improvements and new functionalities (see this overview of New features), it also provides a smoother R-GRASS integration on the Windows platform.

About using R and GRASS with cygwin: It is possible to use Rterm inside the GRASS shell in cygwin, just as in Unix/Linux or OSX. You should not, however, start Rterm from a cygwin xterm, because Rterm is not expecting to be run in a xterm under Windows, and loses its input. If you use the regular cygwin bash shell, but need to start display windows, start X from within GRASS with startx &, and then start Rterm in the same cygwin shell, not in the xterm.