понедельник, 3 июня 2013 г.

Rprofile — кастомизируем рабочее окружение

Блог переехал. Актуальная версия поста находится по адресу: http://aakinshin.net/ru/blog/r/rprofile/.


Давайте поговорим о задании окружения в R. Для этой цели имеется два волшебных файла:
  • Rprofile.site — глобальный файл настроек для всех сессий. Путь в Windows: c:\Program Files\R\R-x.y.z\etc\Rprofile.site, путь в Linux: /etc/R/Rprofile.site.
  • .Rprofile — локальный файл настроек для текущей сессии. Лежит в домашней директории пользователя.
Эти файлы строятся единообразно, в них можно задать глобальные настройки окружения и объявить две полезных функции:
  • .First <- function() { ... } — функция, которая запускается в начале R-сессии
  • .Last <- function() { ... } — функция, которая запускается в конце R-сессии
На Stackoverflow можно посмотреть какие .Rprofile-файлы используют люди. Взглянем, что же можно полезного сделать в таком файле на небольших примерах.

Подключение часто используемых пакетов

Есть ли у вас любимые пакеты, которые вы используете в каждой R-сессии? Вас утомляет каждый раз их импортировать? Так давай те же сделаем это единожды:

Создание псевдонимов для часто используемых функций

А есть ли у вас любимые функции, которые вы вызываете очень часто? Их названия слишком длинные? Так давайте же создадим для них псевдонимы:
s <- base::summary; # используем s(obj) вместо summary(obj)
h <- utils::head;   # используем h(obj) вместо head(obj)
n <- base::names;   # используем n(obj) вместо names(obj)

Задание предпочитаемого репозитория

У стандартного репозитория CRAN есть много зеркал. Вы можете задать любимый репозиторий несколькими строчками кода:
 local({r <- getOption("repos")
       r["CRAN"] <- "http://cran.gis-lab.info/"
       options(repos=r)})

Задание основного языка

А давайте сделаем так, чтобы по умолчанию язык был английский:
Sys.setenv(lang = "en")

Установка различных опций

Вы можете установить любые опции на свой вкус:
options(papersize="a4")
options(editor="notepad")
options(pager="internal")
options(help_type="html")
options("width"=160)
options("digits.secs"=3)
options(prompt="R> ", digits=4, show.signif.stars=FALSE)