Published:

Tweaking your system is in my opinion one of the key features of Linux. Linux offers so many features to play around with to never get bored. Lately, I discoverd that there is also the possibility to tweak your R console. As I was using R heavily during my Bachelor Thesis and still use it quiet commonly, I want to present some in my opinion very useful tweaks in this post.

Firstly, all user-specific tweaking of your R console can and should be done in ~/.Rprofile. This dotfile gets executed every time you start a new R console via your Terminal. In your ~/.Rprofile you can specify several functions which are executed at different times. The .First function is called after the startup of a new R session. The .Last function is called when you exit a session.

### Set a startup message

It is always nice to have a startup message and as R sessions always depend on a certain working directory it is also nice to know that, eventhough mostly I start R via terminal were I know where I started it. Nevertheless, this information never hurts and can be easily defined as the following function in your ~/.Rprofile:

.First <- function() {
# Print a welcome message
message("Welcome back ", Sys.getenv("USER"),"!\n","Working directory is: ", getwd())
}


I am also very annoyed by R’s default user libary destination in ~/R/ wherto I set my user libary path to ~/.R/ instead, which can simply be done by using the libPaths function.

Finally, a little bit of color can help to more easily interpret data. Therefore I use the colorout package to add more visual information to the command line output.

Altogether, my .First function looks like this:

.First <- function() {
# Print a welcome message
message("Welcome back ", Sys.getenv("USER"),"!\n","Working directory is: ", getwd())
# Set local lib path
.libPaths("/home/trybnetic/.R/")

# colorize R output,
if (interactive()) {
library(colorout)
}
}


### Customize prompting

I often use R on different machines so it is useful for me to customize my prompt to a more “bash-like” view. By adding

# customize your R prompt
options(prompt = paste(paste(Sys.info()[c("user", "nodename")], collapse = "@"),"[R] > "))


my prompt looks more like

trybnetic@mars [R] > x <- rnorm(20)


> x <- rnorm(20)


which has the large advantage that I now easily see on which machine I am currently working.

### Setting defaults

Finally, I am quiet lazy and hate it to always choose a mirror whenever I install a package. With

# Set CRAN repository
options(repos = structure(c(CRAN = "https://cran.hafro.is/")))


I set my CRAN repository permanently. Which may be disadvantageously as there might always be mirrors with faster connection times. However, in my experience these differences do not matter much.

### Full ~/.Rprofile file

.First <- function() {
# Print a welcome message
message("Welcome back ", Sys.getenv("USER"),"!\n","Working directory is: ", getwd())
# Set local lib path
.libPaths("/home/trybnetic/.R/")

# colorize R output,
if (interactive()) {
library(colorout)
}
}

# Set CRAN repository
options(repos = structure(c(CRAN = "https://cran.hafro.is/")))