[R-br] .Rprofile no Linux

Jose Claudio Faria joseclaudio.faria em gmail.com
Quinta Agosto 11 12:43:33 BRT 2011


Olá pessoal,

Este "post" tem a finalidade de compartilhar algumas coisas que
considero importantes na inicialização do R.
É voltado para o Linux, mas os princípios, com os devidos cuidados,
podem ser usados também no Windows.

Muitas das opções importantes, do ponto de vista funcional (não
relativos à aparência), podem ser feitas no arquivo .Rprofile.
Esse arquivo deve ficar localizado no home do usuário: ~/.Rprofile e é
um dos primeiros a ser lido quando uma sessão do
R é iniciada.

Tenho uma função (bem simples) que uso bastante em meu dia a dia: "cv"
para calcular o coef. de variação de uma ANOVA:

cv <- function(av)
{
  if(is.null(av) || !inherits(av, 'aov'))
    stop('Please, check the parameter!')
  qmee <- with(av, sum(residuals^2) / df.residual)
  cv   <- 100 * sqrt(qmee) / mean(av$fitted.values)
  return(round(cv, 2))
}

Pois bem, a medida que vamos aumentando nossa intimidade com o R
(inevitavelmente) iremos desenvolvendo nossas próprias
funções (o R foi projetado para isso!).

Ai vem o problema de ter que SEMPRE carregar a função quando for usar,
o que pode se tornar uma chatisse.
Pior ainda, ao limpar o workspace do usuário (.GlobalEnv) elas são
removidas e precisam ser recarregadas.

Tem como contornar?
Sim, de várias formas:

1. Opção muito pouco prática:
oldp <- getwd()
setwd('/home/jcfaria/dados/r/funcoes/')
source('cv.r')
setwd(oldp)

A função "cv" ficará disponível no workspace do usuário mas será
removida com a instrução:

> rm(list=ls())

muito usada por várias GUIs.


2. Opção "mais" prática:
A mesma que a anterior, contudo, a função não deverá se chamar "cv",
mas sim ".cv".
Nesse caso ela permanecerá como um objeto oculto no workspace e não
será removida com a intrução:

> rm(list=ls())

Contudo poderá ser removida com a intrução:

> rm(list=ls(all=TRUE))


3. Colocando suas funções em algum ambiente (environment) do R (optei pelo base)
oldp <- getwd()
setwd('/home/jcfaria/dados/r/funcoes/')
source('cv.r', local=baseenv())
setwd(oldp)

4. Criando seu próprio ambiente (acho a solução mais elegante):
.env <- new.env()
oldp <- getwd()
setwd('/home/jcfaria/dados/r/funcoes/')
source('cv.r', local=.env)
setwd(oldp)

Nesse último caso (4):
- O objeto ".env" ficará oculto no seu workspace evitando ser deletado
com rm(list=ls())
- Parar acessar a função "cv" será necessário

> .env$cv

Por exemplo:
> av <- aov(Sepal.Length ~ Species, data=iris)
> .env$cv(av)
[1] 8.81

Esta forma de carregar as funções de forma permanente no R pode ser
usado para qualquer objeto.

No Windows bastava usar:
source('cv', local=TRUE) que ela fica disponível no pacote base,
contudo, não testei na versão mais nova.

Proveito para disponibilizar meu .Rprofile que poderá ser útil para os
que estão começando

## José Cláudio Faria/UESC/DCET

##¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
## General options
library(utils)
options(list(repos='http://cran-r.c3sl.ufpr.br/',
             width=50,
             editor='vim',
             browser='chromium'))

##¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
## Package debug: options
options(list(debug.height=10,
             debug.width=125,
             debug.screen.pos='-1680+00')) # PARA DOIS MONITORES

##¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
## Functions
oldp <- getwd()
setwd('/home/jcfaria/dados/r/funcoes/')
#source('fitreg.r', local=baseenv())
#source('fitregl.r', local=baseenv())
#source('fitrlcor.r', local=baseenv())
#source('plotreg.r', local=baseenv())
#source('plotrl.r', local=baseenv())
#source('plotlm3d.r', local=baseenv())
#source('cv.r', local=baseenv())
#source('rs.r', local=baseenv())
#source('sourcedir.r', local=baseenv())

.env <- new.env()
source('fitreg.r', local=.env)
source('fitregl.r', local=.env)
source('fitrlcor.r', local=.env)
source('plotreg.r', local=.env)
source('plotrl.r', local=.env)
source('plotlm3d.r', local=.env)
source('cv.r', local=.env)
source('rs.r', local=.env)
source('sourcedir.r', local=.env)

##¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
## Removing variables
setwd(oldp)
rm(oldp)

##¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
## Packages: loading
#library(fdth)
#library(ScottKnott)
library(bpca)
library(reshape)
library(debug)

Abs,
-- 
///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\
Jose Claudio Faria
Estatistica - Prof. Pleno
UESC/DCET/Brasil
joseclaudio.faria at gmail.com
///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\


Mais detalhes sobre a lista de discussão R-br