Packages
R has been around for ages. It remains popular because it’s easy for people to add to it.
You can run almost any statistical model and produce many different plots in R because users write ‘packages’ which extend the base language. For now we assume someone has helped you install all the packages you need5.
To access features in packages, you normally load the package with the
library()
function. Running library(<packagename>)
loads all the new
functions within it, and it is then possible to call them from your code. For
example, typing:
library(ggplot2)
Will load the ggplot2
package. You can then call the qplot
function it
provides:
qplot(mtcars$mpg, bins=7)
It’s good style to load packages at the top of an R script, or in the first chunk of an RMarkdown document. This makes it easy for others to see what packages they need to install, and helps avoid certain sorts of errors in your code.
You don’t strictly need to load packages to use their features. If a package
is installed on your system you can also call a function it provides directly.
In the example below we call the hist.data.frame
from the Hmisc
package, and
obtain histograms of all the variables in the mtcars
dataset:
Hmisc::hist.data.frame(mtcars)
The rule is to type package::function(parameters)
, where ::
separates the
package and function names. Parameters are just the inputs to the function.
There are two reasons not to load a package before using it:
Laziness: it can save typing if you just want to use one function from a package, and only once.
Explicitness: It’s an unfortunate truth that some function names are repeated in different packages. This can be confusing if they work differently or do comepletely different things. If you don’t know which package the version you are using comes from. Using
package_name:function_name
can help make things explicit.
Try using the hist.data.frame
function in the Hmisc
package on the mtcars
data.
- First using the
::
syntax - Then load the
Hmisc
package, and repeat without using the::
.
See the installation guide if this isn’t the case↩