Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
Próxima revisão Ambos lados da revisão seguinte
ridiculas [2011/07/05 14:18]
walmes [Como fazer a justaposição de vários data.frames]
ridiculas [2011/08/13 10:05]
jcfaria [.Rprofile no Linux]
Linha 1: Linha 1:
  
-===== Ridículas ​- dicas curtas sobre R =====+===== R-idículas ​- dicas curtas sobre R =====
  
 {{:​nuvem.png?​550 |}} {{:​nuvem.png?​550 |}}
  
-**//Ridículas//** é a página do LEG dedicada à fornecer //dicas curtas// sobre R, e.g. condução de análises, operação com dados e confecção de gráficos. As dicas estão organizadas pelo título, seguido de descrição,​ palavras-chave e CMR (código mínimo reproduzível). Se você deseja contribuir com a nossa página de Ridículas, envie e-mail para ''​walmes@ufpr.br''​.+**//R-idículas//** é a página do LEG dedicada à fornecer //dicas curtas// sobre R, e.g. entre outras: otimização do ambiente, ​condução de análises, operação com dados e confecção de gráficos. As dicas estão organizadas pelo título, seguido de descrição,​ palavras-chave e CMR (código mínimo reproduzível). Se você deseja contribuir com a nossa página de R-idículas, envie e-mail para ''​walmes@ufpr.br''​.
  
 ---- ----
 +
 +==== .Rprofile no Linux ====
 +<code R>
 +#​------------------------------------------------------------------------------------------
 +#                                                                               por JCFaria
 +#​------------------------------------------------------------------------------------------
 +</​code>​
 +
 +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:
 +
 +<code R>
 +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))
 +}     
 +</​code>​
 +
 +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).
 +
 +<fc #​000080>​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 ...</​fc>​
 +
 +<fc #​000080>​**Tem como contornar? Sim! De várias formas:​**</​fc>​
 +
 +**//1. Opção muito pouco prática://​**
 +<code R>
 +oldp <- getwd()
 +setwd('/​home/​jcfaria/​dados/​r/​funcoes/'​) ​
 +source('​cv.r'​)
 +setwd(oldp)
 +</​code>​
 +
 +A função "​cv"​ ficará disponível no meu workspace mas será removida com a instrução:​
 +
 +<code R>
 +> rm(list=ls()) ​
 +</​code>​
 +
 +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 meu workspace e não será removida com a intrução:
 +
 +<code R>
 +> rm(list=ls())
 +</​code>​
 +
 +Contudo, poderá ser removida com a intrução:
 +
 +<code R>
 +> rm(list=ls(all=TRUE))
 +</​code>​
 +
 +
 +**//3. Colocando suas funções em algum ambiente (environment) do R (optei pelo base)://**
 +<code R>
 +oldp <- getwd()
 +setwd('/​home/​jcfaria/​dados/​r/​funcoes/'​) ​
 +source('​cv.r',​ local=baseenv())
 +setwd(oldp)
 +</​code>​
 +
 +Ela não ficará no meu workspace, mas sim no base.
 +Como tal, poderá ser usada com qualquer outra função desse pacote.
 +
 +
 +**//4. Criando seu próprio ambiente (acho a solução mais elegante)://​**
 +<code R>
 +oldp <- getwd()
 +setwd('/​home/​jcfaria/​dados/​r/​funcoes/'​) ​
 +.jcf <- new.env()
 +source('​cv.r',​ local=.jcf)
 +setwd(oldp)
 +</​code>​
 +
 +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:​
 +
 +<code R>
 +> .jcf$cv
 +
 +# ou
 +
 +> with(.jcf, cv)
 +</​code>​
 +
 +Por exemplo:
 +<code R>
 +> av <- aov(Sepal.Length ~ Species, data=iris)
 +> .jcf$cv(av)
 +[1] 8.81
 +
 +# ou
 +
 +> with(.jcf, cv(av))
 +[1] 8.81
 +</​code>​
 +
 +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:​
 +
 +<code R>
 +source('​cv',​ local=TRUE)
 +</​code>​
 +
 +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:
 +<code R>
 +## 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)
 +
 +##​¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
 +## Removing variables
 +setwd(oldp)
 +rm(oldp)
 +
 +##​¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
 +## Packages: loading
 +#​library(fdth)
 +#​library(ScottKnott)
 +#​library(bpca)
 +#​library(TukeyC)
 +#​library(reshape)
 +#​library(debug)
 +attach(.jcf)
 +<​\code>​
 +----
 +
  
 ==== Como fazer a justaposição de vários data.frames ==== ==== Como fazer a justaposição de vários data.frames ====
Linha 1397: Linha 1583:
 hx <- seq(media+2*stder,​ media+3*stder,​ .01) hx <- seq(media+2*stder,​ media+3*stder,​ .01)
 hy <- dnorm(hx, media, stder) hy <- dnorm(hx, media, stder)
-n <- length(hy)+n <- 
 + length(hy)
 polygon(c(hx,​ rev(hx)), c(hy, rep(0, n)), col=2) polygon(c(hx,​ rev(hx)), c(hy, rep(0, n)), col=2)
 </​code>​ </​code>​
  

QR Code
QR Code ridiculas (generated for current page)