Technical requirements
We will use renv
to manage packages in a project-specific way. To use renv
to install packages, you will first need to install the renv
package. You can do this by running the following commands in your R console:
- Install
renv
:install.packages("renv")
- Create a new
renv
environment:renv::init()
This will create a new directory called .renv
in your current project directory.
- You can then install packages with the following command:
renv::install_packages()
- You can also use the
renv
package manager to installBioconductor
packages by running the following command:renv::install("bioc::package name")
- For example, to install the
Biobase
package, you would run the following command:renv::install("bioc::Biobase")
- You can use
renv
to install development packages from GitHub like this:renv::install("user name/repo name")
- For example, to install the
danmaclean
userrbioinfcookbook
package, you would run the following command:renv::install("danmaclean/rbioinfcookbook")
You can also install multiple packages at once by separating the package names with a comma. renv
will automatically handle installing any required dependencies for the packages you install.
Under renv
, all packages will be installed into the local project directory and not the main central library, meaning you can have multiple versions of the same package—a specific one for each project.
All the sample data you need for this package is in the specially created danmaclean/rbioinfcookbook
data package on GitHub. The data will become available in your project after installing that.
For this chapter, we’ll need the following packages:
- Regular packages:
dplyr
fs
readr
tidyr
stringr
purrr
- GitHub:
danmaclean/rbioinfcookbook
- Custom install:
datapasta
In addition to these packages, we will also need some R tools such as conda
; all these will be described when needed.
Further information
The packages that require a custom install procedure will be described in the relevant recipes.
In R, it is normal practice to load a library and use functions directly by name. Although this is great in short interactive sessions, it can cause confusion when many packages are loaded at once and share function names. To clarify which package and function I am using at a given moment, I will occasionally use the packageName::functionName()
convention.
Sometimes, in the middle of a recipe I’ll interrupt the code to dive into some intermediate output or to look at the structure of an object. When that happens, you’ll see a code block where each line begins with ##
(double hash symbols). Consider the following command:
letters[1:5]
This will give us the following output:
## a b c d e
Note that the output lines are prefixed with ##
.