**[[.:00-inicio|Uso da Linguagem R para Análise de Dados em Ecologia]]** ====== 2. Primeiros Passos ====== ===== Iniciando e Finalizando 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.4.1 (2006-12-18) Copyright (C) 2006 The R Foundation for Statistical Computing ISBN 3-900051-07-0 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. [Previously saved workspace restored] > Agora é só começar a digitar os comandos!!! 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 dois diretórios de trabalho. Para fazer isso no LINUX, abra uma janela de teminal e use o comando ''mkdir [nome do novo diretório]'' - Vá para um dos diretórios e chame o R - Verifique o conteúdo de seu //workspace// - Carregue o arquivo {{biometria:r-tutor:letras.rdata|letras.RData}} no workspace - Verifique o conteúdo de seu //workspace// - Carregue o arquivo {{biometria:r-tutor:numeros.rdata|numeros.RData}} no workspace - Verifique o conteúdo de seu //workspace// - Apague alguns dos objetos de seu workspace - Salve seu //workspace// e saia do R - Vá para o outro diretório de trabalho que você criou - Copie neste diretório o arquivo .RData do diretório anterior. No LINUX, digite no terminal o comando ''cp [diretório/arquivo de origem] [diretório de destino/]'' - Chame o R - Verifique o conteúdo de seu //workspace// - Apague os objetos "''pares''" e "''impares''" de seu workspace - Carregue o arquivo numeros.RData - Verifique o conteúdo de seu //workspace// - Salve seu //workspace// e Saia do R. - Vá para um dos diretórios de trabalho criados no exercício anterior - Chame o R - Apague todo o conteúdo de seu //workspace// - Carregue o arquivo {{biometria:r-tutor:letras.rdata|letras.RData}} - Salve seu //workspace// e saia do R - Vá para o outro diretório de trabalho que você criou e chame o R - Carregue o arquivo {{biometria:r-tutor:numeros.rdata|numeros.RData}} - Verifique o conteúdo de seu //workspace// - Mude o diretório de trabalho para o diretório anterior - Verifique o conteúdo de seu //workspace// **Pergunta**: a mudança para um novo diretório de trabalho não carrega os objetos desse diretório em seu //workspace//. Como fazer para que isso aconteça? ===== 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 de um dos dois diretórios do exercício anterior - Use a função ''load'' para carregar os arquivos {{biometria:r-tutor:bichos.rdata|bichos.RData}} no //workspace// - Consulte a ajuda da função ''ls'' para descobrir como listar apenas os objetos com nomes de bichos - Consulte a ajuda da função ''rm'' 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).