# Title: .Rprofile
# Author: Frédéric CHEVALIER <f15.chevalier@gmail.com>
# Version: 0.3
# Created in: 2014-07-06
# Modified in: 2014-11-03
#==========#
# Comments #
#==========#
# ~/.Rprodile: executed by R for interactive shells.
# see http://stat.ethz.ch/R-manual/R-devel/library/base/html/Startup.html
#==========#
# Versions #
#==========#
# v0.3 - 2014-11-03: less function added
# v0.2 - 2014-10-21: bug correction about width of terminal
# v0.1 - 2014-08-06: bug correction about interactivity (curly brackets missing)
# v0.0 - 2014-07-06: creation
#=======================#
# User specific options #
#=======================#
# Test if it is an interactive session
if (interactive()) {
# Create a new invisible environment for all the functions to go in so it doesn't clutter your workspace
.startup <- new.env()
# Don't ask me for my CRAN mirror every time
options("repos" = c(CRAN = "http://cran.revolutionanalytics.com"))
# Enlarge columns display in R terminal
# source: http://stackoverflow.com/questions/1172485/how-to-increase-the-number-of-columns-using-r-in-linux
options(width=as.integer(system("stty -a | head -n 1 | awk '{print $7}' | sed 's/;//'", intern=TRUE)))
#===========#
# Functions #
#===========#
# Check if pacakge is installed
# source: http://r.789695.n4.nabble.com/test-if-a-package-is-installed-td1750671.html
require(utils, quietly = TRUE)
.startup$is.installed <- function(mypkg) {is.element(mypkg, installed.packages()[,1])}
# All functions executed when starting R
.First <- function() {
# First message
cat(" Welcome to R!\n\n")
# Add colors to prompt
options(colorout.anyterm = TRUE)
if(! .startup$is.installed("colorout")) {
cat("If you want colored prompt, you should install the colorout package.\nLink: http://www.lepem.ufc.br/jaa/colorout.html\n\n")
} else {
library('colorout')
setOutputColors256(
normal = 40,
number = 214,
string = 85,
const = 35,
stderror = 45,
error = c(1, 0, 1),
warn = c(1, 0, 100)
)
cat("\n")
}
}
# All functions executed when exiting R
.Last <- function() {
if (! any(commandArgs() == '--no-readline')) {
require(utils, quietly=TRUE)
#timestamp(quiet=TRUE)
try(savehistory(Sys.getenv("R_HISTFILE")))
}
}
# Prompt showing current clock
# source: http://stackoverflow.com/questions/4222476/r-display-a-time-clock-in-the-r-command-line
myprompt <- "%H:%M R> "
if (capabilities()[["tcltk"]] && require(tcltk2, quietly=TRUE)) {
# First way
.startup$updatePrompt <- function(...) {options(prompt=format(Sys.time(),myprompt))}
tclTaskSchedule(1000, .startup$updatePrompt(), id = "ticktock", redo = TRUE)
.startup$updatePrompt()
} else {
# Second way: working except when error message (no time update)
.startup$updatePrompt <- function(..., quietly=FALSE) {
options(prompt=format(Sys.time(),myprompt))
if (quietly == FALSE) {return(TRUE)}
}
addTaskCallback(.startup$updatePrompt)
.startup$updatePrompt(quietly=TRUE)
}
# Exit
.startup$bye <- function () {q("no")}
# Less emulation
# source: http://stackoverflow.com/questions/3503811/is-there-an-r-equivalent-to-the-bash-command-more
.startup$less <- function(x) {
file <- tempfile()
sink(file); on.exit(sink())
print(x)
file.show(file, delete.file = T)
}
#=========#
# Aliases #
#=========#
# Moving (bash-like command)
.startup$cd <- setwd
.startup$pwd <- getwd
# Attach all the variables above
attach(.startup)
} # End of interactive statement