#------------------------------------------------------------------------------------------
# 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:
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.
rm(list=ls())
Contudo, poderá ser removida com a intrução:
rm(list=ls(all=TRUE))
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.
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)