FONTE:http://www.leg.ufpr.br/doku.php/ridiculas

.Rprofile no Linux

#------------------------------------------------------------------------------------------
#                                                                               por JCFaria
#------------------------------------------------------------------------------------------

Esse post tem a finalidade de compartilhar algumas coisas que considero importantes na inicialização do R no Linux!

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: 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) ela é removida e precisa ser recarregada. Imagine o contexto da necessidade de várias funções, que é o que geralmente acontece com o passar do tempo …

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 meu workspace mas será removida com a instrução:

rm(list=ls())

muito usada por várias GUIs.

  1. 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 meu 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))

  1. 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)

Ela não ficará no meu workspace, mas sim no base. Como tal, poderá ser usada com qualquer outra função desse pacote.

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

Nesse último caso [4]:

O objeto “.jcf” ficará oculto no meu workspace evitando ser deletado com: rm(list=ls())

Parar acessar a função “cv” é necessário:

.jcf$cv

ou

with(.jcf, cv) Por exemplo:

av <- aov(Sepal.Length ~ Species, data=iris) .jcf$cv(av) [1] 8.81

ou

with(.jcf, cv(av)) [1] 8.81

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

No Windows bastava usar no /etc/Rprofile.site:

source('cv', local=TRUE)

que ela ficava disponível no pacote base.

No Windows não testei na versão em desenvolvimento (instável) que uso no Linux, mas deve funcionar, pois usei por muitos anos em várias versões.

Abaixo meu .Rprofile:

## José Cláudio Faria/UESC/DCET
 
##¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
## General options
library(utils)
options(list(repos='http://cran-r.c3sl.ufpr.br/',
             width=80,
             editor='vim',
             browser='chromium'))
 
##¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
## Package debug: options
options(list(debug.height=10,
             debug.width=125,
             debug.screen.pos='-1680+00' # dois monitores!
             ))
 
##¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
## Funtions: myself
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())
 
.jcf <- new.env()
source('fitreg.r',    local=.jcf)
source('fitregl.r',   local=.jcf)
source('fitrlcor.r',  local=.jcf)
source('plotreg.r',   local=.jcf)
source('plotrl.r',    local=.jcf)
source('plotlm3d.r',  local=.jcf)
source('cv.r',        local=.jcf)
source('rs.r',        local=.jcf)
source('sourcedir.r', local=.jcf)
#attach(.jcf)
 
##¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
## Removing variables
setwd(oldp)
rm(oldp)
 
##¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
## Packages: loading
#library(fdth)
#library(ScottKnott)
#library(bpca)
#library(TukeyC)
#library(reshape)
#library(debug)