Working with R Packages and IDE

Raymond Raymond event 2020-09-23 visibility 445
more_vert

In this series, we've walked-through R programming basics and advanced data types. This article will focus on R packages and IDEs so that you can program efficiently with R.

R terminologies

Let's recap these commonly mentioned R terminologies:

  • Package: An extension of the R base system with code, data and documentation in standardized format.
  • Library: A directory containing installed packages.
  • Repository: A website providing packages for installation.
  • Source: The original version of a package with human-readable text and code.
  • Binary: A compiled version of a package with computer-readable text and code, may work only on a specific platform.
  • Base packages: Part of the R source tree, maintained by R Core team.
  • Recommended packages: Part of every R installation, but not necessarily maintained by R Core.
  • Contributed packages: All the rest.

R library & packages

There are two types of libraries in a R environment:

  • System library: Contains built in packages distributed with R client
  • User library: Contains packages manually installed via CRAN or manual download 

In RStudio, you can choose different R system library via Tools -> Global Options.

2020092372722-image.png
As shown above, I have multiple R distributions in my computer that can be used. 
For R packages, we can search, install and load them easily using system functions:
  • List all the packages currently loaded: 
search()
  • List all installed packages
installed.packages()
  • Install packages from CRAN (Comprehensive R Archiving Network)
install.packages("PackageName")
  • Install packages manually
install.packages("local package path", repos=NULL, type="source")
  • Remove packages
remove.packages()
  • Load packages
library(“PackageName”)
require(PackageName)

The following are some examples (script R17.Library.R)

Get library path

Run the following function to get current library path in the project:

# Get library path, it can returns different results in different IDEs based on the settings
.libPaths()

[1] "E:/Documents/R/win-library/3.4"                      
[2] "C:/Program Files/Microsoft/R Client/R_SERVER/library"

List available packages

# Get list of all the packages installed in all library
library()

In RStudio, it will open a window that list all the packages in each library:

2020092373159-image.png

Install package from CRAN

The following code snippet installs XML package 

# install package from CRAN
install.packages("XML")

Show currently loaded package

> # currently loaded packages
> search()
 [1] ".GlobalEnv"            "tools:rstudio"         "package:RevoUtilsMath"
 [4] "package:RevoUtils"     "package:RevoMods"      "package:MicrosoftML"  
 [7] "package:mrsdeploy"     "package:RevoScaleR"    "package:lattice"      
[10] "package:rpart"         "package:stats"         "package:graphics"     
[13] "package:grDevices"     "package:utils"         "package:datasets"     
[16] "package:methods"       "Autoloads"             "package:base"       

Load library

Function library() can be used to load library. 

> # load library
> library("XML")
> 
> # Run search again
> search()
 [1] ".GlobalEnv"            "package:XML"           "tools:rstudio"        
 [4] "package:RevoUtilsMath" "package:RevoUtils"     "package:RevoMods"     
 [7] "package:MicrosoftML"   "package:mrsdeploy"     "package:RevoScaleR"   
[10] "package:lattice"       "package:rpart"         "package:stats"        
[13] "package:graphics"      "package:grDevices"     "package:utils"        
[16] "package:datasets"      "package:methods"       "Autoloads"            
[19] "package:base"  

The above search function shows XML package is loaded. We can also use programming to check whether a package is loaded:

> # Check whether package is currently loaded.
> if("package:XML" %in% search())
+ {
+   print("XML package is currently loaded")
+ }else
+ {
+   print("XML package is not currently loaded")
+ }
[1] "XML package is currently loaded"

Working directory

In R, we can get current working directory using the following function:

getwd()

Working directory can also be set dynamically using setwd function:

setwd(dir)

To list files in current directory, use list.files():

list.files()

The following is the working directory for this R programming tutorial in my computer:

2020092374555-image.png

Examples

The following are the examples about working directory (script R18.WorkingDirectory.R):

# get current directory
getwd()

# Set working directory
setwd("F:/Projects/RTutorialSamples")

# list files in this directory

list.files(all.files = TRUE)

.RData

R objects and variables can be saved to .RData file.

To save list of object, use function save()To save variables in current working space using save.image() or save function:

save(list = ls(all.names = TRUE), file = ".RData", envir = .GlobalEnv)

Saved objects can be reloaded through load() function.

Here are some examples about .RData (script R19.RDataAndRHistory.R):

# Save objects into data files
x<- 1:10
y <- list(a = 1, b = TRUE, c = "chars")
save(x, y, file = "xy.RData")

# save my currenct working sapce
save.image()
# or use save commands
save(list = ls(all.names = TRUE), file = ".RData", envir = .GlobalEnv)

# load file
load("xy.RData")

# delete file
unlink("xy.RData")

.RHistory

.RHistory in working directory stores all the historical commands that have been used previously. 

In RStudio, the history commands are displayed in the History tab:

2020092375347-image.png

Useful tips

In RStudio, there are few useful tips that are commonly used: 

Clear console

  • Run function: cat("\014") 
  • Or press CTRL + L

Function help

Use ? to get help

?save 

The output looks like the following:

2020092375451-image.png

Search keyword

You can also search certain keyword in the help documentations:

help.search("keyword")

Examples

Here are some examples about getting help information (script R20.Helps.R):

?help

?save

help.search("XML")

help.search("lm")

Summary

Hopefully, you now have a good idea about how to use R IDEs efficiently and how to install and load external packages.

More from Kontext
comment Comments
No comments yet.

Please log in or register to comment.

account_circle Log in person_add Register

Log in with external accounts