**[[.:00-inicio|Uso da Linguagem R para Análise de Dados em Ecologia]]** ====== 2. Primeiros Passos ====== ===== Instalação do R ===== Os arquivos necessários para instalar o ambiente R estão disponíveis gratuitamente no sítio oficial [[http://www.r-project.org/]]. A página oficial do R é a referência básica para seus usuários e desenvolvedores, onde você também encontra instruções de instalação, listas de discussão, tutoriais, documentação e muitas informações úteis. ===== Iniciando o R ===== Em ambiente UNIX (como o Linux, por exemplo), podemos iniciar o R a partir do interpretador de comandos (//shell//) digitando o comando ''R'': parsival@jatai $ R Já no sistema MS-Windows, é necessário clicar no ícone apropriado (no desktop) ou buscar o programa a partir do menu **Iniciar**. Independentemente de como inicia, o R apresenta uma tela com (aproximadamente) a seguinte forma: R version 2.7.0 (2008-04-22) Copyright (C) 2008 The R Foundation for Statistical Computing ISBN 3-900051-07-0 R é um software livre e vem sem GARANTIA ALGUMA. Você pode redistribuí-lo sob certas circunstâncias. Digite 'license()' ou 'licence()' para detalhes de distribuição. R é um projeto colaborativo com muitos contribuidores. Digite 'contributors()' para obter mais informações e 'citation()' para saber como citar o R ou pacotes do R em publicações. Digite 'demo()' para demonstrações, 'help()' para o sistema on-line de ajuda, ou 'help.start()' para abrir o sistema de ajuda em HTML no seu navegador. Digite 'q()' para sair do R. [Área de trabalho anterior carregada] > ==== A Linha de Comando ==== O R é uma linguagem interativa, ou seja, que permite ao usuário enviar um comando por vez e receber o resultado((é possível também de executar um lote de comandos, mas neste wiki trabalharemos apenas com o modo interativo.)). Para isso, usamos a linha de comando, que tem o sinal "''>''" quando o R está pronto para receber um comando. Os outros dois estados da linha de comando são o de execução e o de espera para a conlusão do comando. No modo de execução não é exibido nenhum sinal e não é possível digitar outro comando. Você só perceberá isso se der um comando que tenha um tempo de execução muito longo. O estado de espera ocorre quando o usuário envia um comando incompleto, o que é indicado por um sinal de "''+''": > > log(2 + ) [1] 0.6931472 > Na primeira linha, não fechamos os parênteses da função ''log'' e demos //enter//. O R responde com o sinal de espera (''+''), indicando que o comando está incompleto. Digitando o parêntese que falta e apertando a tecla //enter// novamente o R retorna o resultado do comando, precedido de um índice numérico.((o significado desse índice ficará claro na seção sobre [[04-dados#Subconjuntos e Indexação|indexação]]. Por enquanto basta saber que os resultados do R são precedidos por um indicador numérico entre colchetes)) ==== Sintaxe Básica dos Comandos ==== Um comando no R em geral inclui uma ou mais funções, que seguem a seguinte sintaxe: **função(argumento1 = valor, argumento2 = valor , ...)** Como nos exemplos abaixo: > plot(x=area,y=riqueza) > plot(area, riqueza) > plot(area,riqueza,xlab="Área (ha)", ylab="Riqueza") * No primeiro caso, o valor de cada argumento usado está explicitado. O argumento ''x'' da função ''plot'' é a variável independente, e o argumento ''y'' é a variável dependente. * Se o nome dos argumentos é omitido, como no segundo caso, o R usa o critério de posição: o primeiro valor é atribuído ao primeiro argumento, o segundo valor ao segundo argumento, e assim por diante. Como os dois primeiros argumentos da função plot são ''x'' e ''y'', o segundo comando acima equivale ao primeiro. * Os dois critérios podem ser combinados, como no terceiro comando: como x e y são os dois primeiros argumentos, não é preciso declará-los. Como os outros dois argumentos que se deseja usar (''xlab'' e ''ylab'') não vêm em seguida, é preciso declará-los. Mais detalhes na [[03-funcoes#As Funções no R|seção sobre funções]]. ==== Criação de Objetos: Atribuição ==== Você pode "guardar" o resultado de um comando com a operação de //atribuição//, que tem a sintaxe: **objeto** //recebe// **valor** Há dois operadores que atribuem valores a um objeto dessa maneira: * Sinal de menor seguido de hífen, formando uma seta para a esquerda: ''<''''-'' * Sinal de igual: ''='' Uma forma de atribuição menos usada é: **valor** //atribuído a// **objeto** Nesse caso, o sinal de atribuição é o hífen seguido de sinal de maior, formando uma seta para direita: ''-''''>'' Há, portanto, três maneiras de guardar os resultados de um comando em um objeto: > a <- sqrt(4) > b = sqrt(4) > sqrt(4) -> c Para exibir o conteúdo de um objeto, basta digitar seu nome > a [1] 2 > b [1] 2 > c [1] 2 Se a atribuição é para um objeto que não existe, esse objeto é criado. **Mas cuidado**: se já há um objeto com o mesmo nome na sua área de trabalho, seus valores serão substituídos: > a <- sqrt(4) > a [1] 2 > a <- 10^2 > a [1] 100 ==== Mensagens de Erro e de Avisos ==== Como em qualquer linguagem, o R tem regras de sintaxe e grafia. Mas contrário das linguagens humanas, mesmo um pequeno erro torna a mensagem incompreensível para o R, que então retorna uma mensagem de erro: > logaritmo(2) Erro: não foi posssível encontrar a função "logaritmo" > log(2)) Erro: unexpected ')' in "log(2))" > log(2, basse=10) Erro: unused argument(s) (basse = 10) > log(2, base=10) [1] 0.30103 Em outros casos, o comando pode ser executado, mas com um resultado que possivelmente você não desejava. O R cria mensagens de alerta para os casos mais comuns desses resultados que merecem atenção : > log(-2) [1] NaN Warning message: In log(-2) : NaNs produzidos ===== Para Sair ===== Para sair do R, a forma mais fácil é usar o comando ''q'' (do inglês //quit//). Nesse caso o R, lhe pergunda se você deseja //salvar// (gravar) sua sessão de trabalho. > q() Save workspace image? [y/n/c]: As opções são: ''y = yes, n = no, c = cancel''. ===== Como o R Guarda os Dados? ===== O que significa a pergunta feita quando damos o comando ''q()''? A resposta passa por três conceitos importantíssimos, que são o **diretório de trabalho**, a **sessão** e a **área virtual de trabalho (//workspace//)**. Cada vez que você inicia o R, dizemos que se inicia uma **sessão**. O diretório a partir do qual você iniciou o R é o **diretório de trabalho** dessa sessão. Para verificar seu diretório de trabalho, use o comando ''getwd''((acrônimo de "get working directory")): > getwd() [1] "/home/paulo/work/Pos_grad/Eco_USP/cursoR" Para alterar o diretório de trabalho há a função ''setwd'': > setwd("/home/paulo/work/treinos_R/") > getwd() [1] "/home/paulo/work/treinos_R" A sessão iniciada está ligada a uma área de trabalho particular chamada de **workspace**. Tudo o que você faz durante uma sessão (leitura de dados, cálculos, análises estatísticas) é realizado no **workspace**. Mas o **workspace permanece na memória do computador**. Somente quando você dá o comando de sair (''q()'') é que o R lhe pergunta se você deseja **gravar** o seu **workspace**. Se você responde 'y', o R grava um arquivo chamado ''.RData''((este é um arquivo oculto, pois seu nome inicia-se com um ponto)) em seu **diretório de trabalho**. Na próxima vez que o R for chamado desse diretório, o conteúdo do arquivo ''.RData'' será carregado para o "workspace". ==== Aprenda este Comando para Não Perder Seu Trabalho ==== Se acontecer do computador ser desligado durante uma sessão do R, tudo que foi feito será perdido!!! Para evitar isso, é interessante gravar com frequência o **workspace** utilizando o comando '''save.image()''': > save.image() > Por //default//, o R gravará o workspace no arquivo ''.RData'', e quando você reiniciar uma sessão, o R automaticamente **carrega** esse arquivo. Mas você pode salvar em outro arquivo utilizando o **argumento** ''file'' da função: > save.image(file="minha-sessao-introdutoria.RData") > Como o R carrega automaticamente apenas o arquivo ''.RData'' que está no diretório de trabalho, caso deseje carregar outros arquivos você deverá usar a função ''load'': >##Carrega um arquivo de workspace no mesmo diretório > load(file="minha-sessao-introdutoria.RData") >##Carrega o arquivo default de workspace de outro diretório: > load(file="/home/paulo/work/treinos_R/.RData") ==== Aprenda este Procedimento para Organizar Seu Trabalho ==== Crie um diretório de trabalho para cada análise, ou mesmo para versões diferentes da mesma análise, e chame o R desse diretório. Fazendo isso você recupera seu trabalho de maneira simples, bastando salvar as alterações regularmente com o comando ''save.image()'' e confirmar a gravação das alterações ao encerrar a sessão. Ao contrário do que você pode estar acostumado(a), não é uma boa idéia manter vários arquivos com diferentes versões dos dados ou análises em um mesmo diretório. Os usuários de R em geral mantém o padrão da linguagem, de um único arquivo //default// por análise, o ''.RData'', criando quantos diretórios forem necessários para organizar o trabalho. ===== Gerenciando a Área de Trabalho ===== ==== Listando Objetos ==== O comando ''ls'' lista todo o conteúdo da área de trabalho, se não é fornecido argumento: > ls() [1] "consoantes" "CONSOANTES" "vogais" "VOGAIS" A função ''ls'' possui argumentos que podem refinar seus resultados, consulte a ajuda para os detalhes. ==== Apagando Objetos ==== O comando ''rm'' apaga objetos da área de trabalho: > ls() [1] "consoantes" "CONSOANTES" "vogais" "VOGAIS" > rm(consoantes) > ls() [1] "CONSOANTES" "vogais" "VOGAIS" Consulte a ajuda da função ''rm'' para seus argumentos. ---- ==== Exercícios ==== - Crie um diretório para seus exercícios da disciplina. - Chame o R, clicando no ícone da área de trabalho ou na barra de tarefas. - Verifique o seu diretório de trabalho. - Mude o diretório de trabalho para o diretório que você criou. - Verifique o conteúdo da área de trabalho. - Carregue o arquivo {{biometria:r-tutor:letras.rdata|letras.RData}}. - Verifique novamente sua área de trabalho. - Saia do R, tomando o cuidado de salvar sua área de trabalho. - Repita os passos 2 a 5. **Pergunta**: Que problemas você percebeu? Há uma maneira de iniciar o R no windows que evite esses problemas? ===== Como Conseguir Ajuda no R ===== No R é essencial aprender a procurar auxílio e manuais sozinho. Após um aprendizado inicial, não há meio de evoluir no conhecimento do ambiente R se não se buscar os **//helps//** que ele possui. ==== O Comando ''help'' ==== Para conseguir ajuda sobre um comando pode ser usada a função ''help'': > help(mean) ou então o operador de ajuda que é o sinal de interrogação '?': ?mean No caso se buscar ajuda sobre um **operador** (símbolo para operações aritméticas e algébricas) devemos utilizar as aspas duplas: > help("+") > ?"*" Ao utilizar esses comandos (help e ?) o R entra num modo interativo diferente: **help interativo**. Ele apresenta uma **//help page//** que você pode examinar usando os seguintes comandos de teclado: * tecla de espaço = um página para frente; * tecla "f" = uma página para frente; * tecla "b" = uma página para trás; * tecla enter = uma linha para frente; * tecla j = uma linha para frende; * tecla k = uma linha para trás; * tecla q = sai do modo **help interativo** e retorna à linha de comando. No modo **help interativo** também é possível se fazer uma busca por uma palabra (//string//) usando a tecla '/', na forma: /string Executado um comando de busca temos dois novos comandos válidos: * tecla n = próxima string, e * tecla N = string anterior. === A Tela de Ajuda === O conteúdo do **help interativo** pode parecer árido à primeira vista, mas é extremamente informativo, assim que nos acostumamos com ele. As seções são padronizadas, e seguem sempre a mesma ordem: * Um cabeçalho com o nome da função, o pacote do R à qual pertence, e a classe do documento de ajuda * O nome completo da função * A sintaxe da função, que pode estar especificada para diferentes tipos de dados ou métodos * A explicação de cada um dos argumentos da função * O valor retornado pela função * Referências bibliográficas * Indicação de outras funções relacionadas * Exemplos (colar esses comandos no R é uma das melhores maneiras de entender uma função). == Abaixo o conteúdo da ajuda para a função ''mean'': == mean package:base R Documentation Arithmetic Mean Description: Generic function for the (trimmed) arithmetic mean. Usage: mean(x, ...) ## Default S3 method: mean(x, trim = 0, na.rm = FALSE, ...) Arguments: x: An R object. Currently there are methods for numeric data frames, numeric vectors and dates. A complex vector is allowed for 'trim = 0', only. trim: the fraction (0 to 0.5) of observations to be trimmed from each end of 'x' before the mean is computed. na.rm: a logical value indicating whether 'NA' values should be stripped before the computation proceeds. ...: further arguments passed to or from other methods. Value: For a data frame, a named vector with the appropriate method being applied column by column. If 'trim' is zero (the default), the arithmetic mean of the values in 'x' is computed, as a numeric or complex vector of length one. If any argument is not logical (coerced to numeric), integer, numeric or complex, 'NA' is returned, with a warning. If 'trim' is non-zero, a symmetrically trimmed mean is computed with a fraction of 'trim' observations deleted from each end before the mean is computed. References: Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) _The New S Language_. Wadsworth & Brooks/Cole. See Also: 'weighted.mean', 'mean.POSIXct' Examples: x <- c(0:10, 50) xm <- mean(x) c(xm, mean(x, trim = 0.10)) mean(USArrests, trim = 0.2) ==== Ajuda em Hipertexto: ''help.start'' ==== Para os que preferem trabalhar com ajuda em hipertexto (html), há o comando ''help.start()'': > help.start() Making links in per-session dir ... If 'sensible-browser' is already running, it is *not* restarted, and you must switch to its window. Otherwise, be patient ... > Após esta mensagem, um portal de ajuda em hipertexto será aberto no navegador de internet padrão do sistema. A partir dessa página inicial é possível fazer pesquisas por palavras-chave, consultar funções por pacote ou por ordem alfabética, obter textos introdutórios sobre a linguagem, e muito mais. {{ biometria:r-tutor:telahelpstart800x600.png }} ---- ==== Pesquisa por Palavras-Chave na Ajuda ==== Outro comando muito útil é o ''apropos''. Ele possibilita sabermos quais funções do R tem no nome uma certa palavra (//string//): > apropos(plot) [1] "biplot" "interaction.plot" "lag.plot" [4] "monthplot" "plot.density" "plot.ecdf" [7] "plot.lm" "plot.mlm" "plot.spec" [10] "plot.spec.coherency" "plot.spec.phase" "plot.stepfun" [13] "plot.ts" "plot.TukeyHSD" "preplot" [16] "qqplot" "screeplot" "termplot" [19] "ts.plot" "assocplot" "barplot" [22] "barplot.default" "boxplot" "boxplot.default" [25] "cdplot" "coplot" "fourfoldplot" [28] "matplot" "mosaicplot" "plot" [31] "plot.default" "plot.design" "plot.new" [34] "plot.window" "plot.xy" "spineplot" [37] "sunflowerplot" "boxplot.stats" ".__C__recordedplot" Para pesquisas mais complexas e refinadas há ainda a função ''help.search()''. Por exemplo, para pesquisar funções que tenham a palavra "skew"no título: > help.search(field="title","skew") Help files with title matching 'skew' using regular expression matching: skewnormal1(VGAM) Univariate Skew-Normal Distribution Family Function snorm(VGAM) Skew-Normal Distribution k3.linear(boot) Linear Skewness Estimate Type 'help(FOO, package = PKG)' to inspect entry 'FOO(PKG) TITLE'. ==== Busca de Exemplos e de Argumentos das Funções ==== Para obter apenas os exemplos que estão na ajuda de uma função, use a função ''example'': > example(mean) mean> x <- c(0:10, 50) mean> xm <- mean(x) mean> c(xm, mean(x, trim = 0.1)) [1] 8.75 5.50 mean> mean(USArrests, trim = 0.2) Murder Assault UrbanPop Rape 7.42 167.60 66.20 20.16 Muitas vezes precisamos apenas nos lembrar dos argumentos de uma função. Para isso, use a função ''args'', que retorna os argumentos de uma função: > args(chisq.test) function (x, y = NULL, correct = TRUE, p = rep(1/length(x), length(x)), rescale.p = FALSE, simulate.p.value = FALSE, B = 2000) NULL Argumentos com valores atribuídos são os valores //default// da função. Por exemplo, por //default// a função de teste de Qui-quadrado estima a significância pela distribuição de Qui-quadrado e não por randomização (argumento ''simulate.p.value=FALSE''). ==== Exercícios ==== - Execute o R, usando o diretório de trabalho criado no exercício anterior. - Use a função ''load'' para carregar o arquivo {{biometria:r-tutor:bichos.rdata|bichos.RData}} no //workspace//. - Consulte a ajuda da funções ''rm'' e ''ls'' para descobrir como apagar apenas os objetos cujos nomes começam com "temp". ===== Particularidades dos Comandos no R ===== Como em toda linguagem, o R tem algumas regras básicas de sintaxe e grafia: - O nome de comandos e objetos no R pode ser compostos de: * letras (minúsculas ou maiúsculas), * números, e * o ponto (.). - Evite qualquer outro caracter especial, incluindo //o espaço em branco//. - O nome //não pode ser iniciado// por um número. - O R é sensível a caixa: o comando ''q'' é diferente do comando ''Q'' (que não existe!!!). Para que um comando seja **executado** pelo R é necessário ser acompanhado de parênteses '()'. Compare esse comando > q() Save workspace image? [y/n/c]: c > com o comando > q function (save = "default", status = 0, runLast = TRUE) .Internal(quit(save, status, runLast)) > O comando sem os parênteses é na verdade o **nome do comando**. Sendo o R um software de código aberto, toda vez que se digita o nome de um comando, ele **não executa** o comando mas **mostra o conteúdo** do comando (o código).