Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Goal: Demonstrate how to use an R library to create a shared set of R packages.



Use Case

Consider the following use cases:

  • You’re collaborating on some research and want users of the project to use the same R environment and set/version of a collection of R packages.

  • You’re leading a workshop and want all attendees to learn using the same environment.

In both cases we can setup an R library within a shared location, such as a project folder, which all users can access, and thus use the same set of packages.


General Process

The general process for this is:

  1. Create a folder in a shared location.

  2. Load and start R.

  3. Update the library paths to point to this location.

  4. Install R packages.

Every time this is to be used:

  1. Load and start R.

  2. Update the library paths to point to this location.


Example

# Create R Library folder:
[salexan5@mblog2 ~]$ cd /project/arcc/software/
[salexan5@mblog2 software]$ mkdir -p r_library/r_workshop
[salexan5@mblog2 r_library]$ cd r_workshop/
[salexan5@mblog2 r_workshop]$ pwd
/project/arcc/software/r_library/r_workshop

# Load and Start R
[salexan5@mblog2 ~]$ module load gcc/13.2.0 r/4.4.0
[salexan5@mblog2 ~]$ R

# Check current library paths:
> .libPaths()
[1] "/cluster/medbow/home/salexan5/R/x86_64-pc-linux-gnu-library/4.4"
[2] "/apps/u/spack/gcc/13.2.0/r/4.4.0-pvzi4gp/rlib/R/library"

Create Current Available R Packages

> write.table(installed.packages()[,c(1,2,3:4)])
"Package" "LibPath" "Version" "Priority"
"class" "class" "/cluster/medbow/home/salexan5/R/x86_64-pc-linux-gnu-library/4.4" "7.3-22" "recommended"
...
"XML" "XML" "/cluster/medbow/home/salexan5/R/x86_64-pc-linux-gnu-library/4.4" "3.99-0.17" NA
"base" "base" "/apps/u/spack/gcc/13.2.0/r/4.4.0-pvzi4gp/rlib/R/library" "4.4.0" "base"
...
"utils" "utils" "/apps/u/spack/gcc/13.2.0/r/4.4.0-pvzi4gp/rlib/R/library" "4.4.0" "base"

Note: We can current see packages installed:

  1. Under our home folder.

  2. Base packages installed as part of this R version.


Update the Library Path

> .libPaths(c('/project/arcc/software/r_library/r_workshop', '/apps/u/spack/gcc/12.2.0/r/4.4.0-7i7afpk/rlib/R/library'))
> write.table(installed.packages()[,c(1,2,3:4)])
"Package" "LibPath" "Version" "Priority"
"base" "base" "/apps/u/spack/gcc/13.2.0/r/4.4.0-pvzi4gp/rlib/R/library" "4.4.0" "base"
...
"utils" "utils" "/apps/u/spack/gcc/13.2.0/r/4.4.0-pvzi4gp/rlib/R/library" "4.4.0" "base"

Note: We can currently only see the base packages since we haven’t yet installed anything into /project/arcc/software/r_library/r_workshop


Install a package into the New Library Location

# Within R:
> install.packages("Matrix")
...
also installing the dependency ‘lattice’
...
* DONE (Matrix)

> write.table(installed.packages()[,c(1,2,3:4)])
"Package" "LibPath" "Version" "Priority"
"lattice" "lattice" "/cluster/medbow/project/arcc/software/r_library/r_workshop" "0.22-6" "recommended"
"Matrix" "Matrix" "/cluster/medbow/project/arcc/software/r_library/r_workshop" "1.7-0" "recommended"
"base" "base" "/apps/u/spack/gcc/13.2.0/r/4.4.0-pvzi4gp/rlib/R/library" "4.4.0" "base"
...
"utils" "utils" "/apps/u/spack/gcc/13.2.0/r/4.4.0-pvzi4gp/rlib/R/library" "4.4.0" "base"

# Lets check:
[salexan5@mblog2 r_library]$ ls r_workshop/
lattice  Matrix

Test and Use

Error:

[salexan5@mblog1 r_library]$ cat r_library_test_fail.R
library(Matrix)

[salexan5@mblog1 r_library]$ Rscript r_library_test_fail.R
Error in library(Matrix) : there is no package called ‘Matrix’
Execution halted
# The Matrix package is NOT available under our default library location.

Success:

Update the .libPaths() every time you wish to use this R library.

[salexan5@mblog1 r_library]$ cat r_library_test.R
.libPaths(c('/project/arcc/software/r_library/r_workshop', '/apps/u/spack/gcc/12.2.0/r/4.4.0-7i7afpk/rlib/R/library'))
library(Matrix)

[salexan5@mblog1 r_library]$ Rscript r_library_test.R
[salexan5@mblog1 r_library]$ 

Warning: Remember

Within this example, by default this is a SHARED project location.

Anyone who has access to this project and thus this shared library can update it.

If an individual performs an install.packages() it will effect everyone.

The project users will need to collaborate and come up with some form of data plan and/or process for the management of this shared library.


previous section

 

next section

 

  • No labels