[[bot89:precurso:2instalando:inicio]]

Primeiros passos no R

  • Faça tutorial na ordem apresentada, especialmente se tudo isso é novo para você
  • Use o R via RStudio, é mais simples.
  • Executar cada script, linha por linha, procurando entender o que cada linha faz e cada comando representa;
  • Para cada função nova, utilize o Help do R, leia o que significam cada um dos argumentos. Altere os argumentos das funções e veja o que acontece. Explore!
  1. Baixe e instale o R - para o seu sistema operacional.
  2. RStudio - baixe e instale o RStudio, que vai facilitar o uso do R e oferece os recursos de markdown
  • Ao executar o R ou o RStudio você terá basicamente duas janelas principais:
    • Terminal ou Console - a interface que interpreta o código da linguagem. Os códigos digitados aqui serão interpretados pelo R.
    • Arquivo do Script - digitar um código curto no console é simples, mas quando o código é longo fica meio inviável e confuso. Além disso é importante poder guardar um código para executar em outro momento. Por isso, é boa prática escrever o código num arquivo simples de texto que pode ser salvo (extensão .R.) numa pasta no seu computador e reutilizado. Como um arquivo *.R é um texto simples, ele é editável por qualquer editor de texto como Bloco de Notas (ou Notepad++) para usuários Windows, TextWrangler (Mac OSX) ou gedit (Linux). O editor de scripts do RStudio é excelente.


R Studio
Imagem de uma sessão do R studio com três painéis abertos.

R Padrão para Mac OSX
Imagem de uma sessão do R para Mac OSX com um janela de script aberta além do console.

  • A chave para entender o R é que trata-se de uma linguagem. Uma linguagem para manipular objetos (William N. Venables, Brian D. Ripley, 2002). Um objeto é identificado por uma palavra e veremos ao longo do curso que existem vários tipos de objetos. Este é o conceito mais importante para entender o R.
  • Para começar, digite algumas coisas no Console do seu R ou RStudio:


#Por exemplo, digite uma fórmula matemática simples e pressione enter:
3+5+10  #o console retornou 18 - veremos como o R funciona como calculadora, portanto, números são interpretados como números pelo console
 
#Agora vamos criar um objeto simples. 
objum = "vou colocar um texto dentro do meu primeiro objeto" #enter
objum #enter
 
#vejam que objum é o nome do meu primeiro objeto, e tem como conteúdo o texto que eu coloquei dentro
#eu poderia ter chamado objum de qualquer coisa (sem espaços em branco)
banana = "vou colocar um texto dentro do meu primeiro objeto"
banana 
#mesma coisa né?
 
#um objeto também pode virar outro objeto
objdois = objum
objdois  #pegou o conteúdo que eu coloquei em objum
 
#e posso colocar o resultado da minha conta
objtres = 3+5+10
objtres


  • Note que o código acima é o seu script, ou seja a sequência de códigos que você escreveu e que o R irá interpretar para realizar oque foi dito. Se você escrever isso num arquivo .R, que você pode executar tantas vezes quanto quiser. Copie o código para a janela do script e salve ele como "script01.R" em alguma pasta no seu computador.
  • Note também que dependendo do objeto, o código acima tem cores diferentes. Em vermelho e entre aspas estão textos, os números em roxo e objetos criados em preto. Isso ajuda a entender os elementos da sintaxe (vocabulario e gramática do R). O RStudio também mostra isso colorido. Neste wiki, além de colorir segundo a sintaxe do R, um link aponta para o help das funções do R se você colocar o mouse sobre algumas funções (experimente abaixo).
  • Note também que à direita do símbolo # o texto no código acima fica cinza, que indica ao R que não é para interpretar isso. Este símbolo é usado para incluir comentários nos scripts.
  • Se você já está escrevendo um script num arquivo e não no console, selecione todo o texto na sua janela de script e digite CONTROL+R (Windows), ou Command+Enter (Mac). O conteúdo do script será executado no Console. Note que o símbolo # não é interpretado pelo console.
  • O R vem com vários scripts prontos, que são funções que executam alguma coisa. Esses scripts são objetos de classe função, pois eles contém um conjunto de código que usa parâmetros para executar um conjunto de passos. Parâmetros são objetos que a função utiliza segundo as tuas especificações. Por exemplo, vamos listar os objetos criados no passo anterior:
#digite
ls()  #note os parênteses (); a função ls() lista os objetos criados por você: [1] "banana"  "objdois" "objtres" "objum" 
 
#adicione um parâmetro à função, especificando o que você quer listar, apenas aqueles que contém no nome o padrão "obj"
ls(pattern="obj") #[1] "objdois" "objtres" "objum"  
 
#agora veja o que a função ls é 
ls  #note que não digitei os parênteses e ao digitar isso verei o script que está dentro da função ls que começa assim: function (name, pos = -1L, envir = as.environment(pos), all.names = FALSE, pattern, sorted = TRUE)  { ....
#note que os argumentos da função são os objetos que vão dentro do () da função e são utilizados pela função para executar alguma coisa, neste caso, lista objetos. Experimente mudando parâmetros:
ls(sorted=FALSE) #ele mostra os objetos na ordem que foram criados
  • Como vimos acima, um script to tipo função é um objeto que executa um conjunto de comandos e recebe argumentos que modificam o que o script realiza. Existem dois tipos de funções:
    • Funções da Base - funções que vem junto com o R quando você faz o download do programa.
    • Funções de Pacotes - pacotes (library, packages) são funções criadas por colaboradores e organizadas em pacotes que você pode baixar dos repositórios do R.
  • As funções da base vem junto com o programa e você não precisa se preocupar com isso. Pacotes, por outro lado, você precisa instalar conforme a sua necessidade. Por exemplo, para trabalhar com dados filogenéticos você pode necessitar do pacote ape (Analyses of Phylogenetic and Evolution), que já tem várias funções preparadas para análises filogenéticas.
  • Para trabalhar com pacotes você primeiro precisa definir um repositório, ou seja, um servidor, de vários disponíveis (espelhos do repositório oficial), de onde o R irá buscar o pacote desejado.
  • Pode usar o menu do R ou do RStudio para instalar pacotes e definir um repositório padrão para sua instalação.
  • Como tudo no R, você pode executar comandos que estão no menu usando funções. Por exemplo, ao invés de usarmos o menu do R vamos definir o repositório e instalar um pacote usando um script:
#isso pode não funcionar se estiver no INPA por causa do Proxy. 
chooseCRANmirror() #seleciona repositório
install.packages("ape",dependencies = TRUE) #instala o pacote Ape


  • São inúmeros os pacotes (libraries) disponíveis nos repositórios do R:
    • Taskviews: São listas comentadas dos pacotes do R para uma certa área ou tema, mantidas no CRAN1). Para nossa área, p.ex, há os views Environmetrics, Multivariate, Genetics, Spatial, Morphometrics, Phylogenetics. Todo espelho de CRAN mantém uma cópia dos taskviews. Para o espelho da FMV-USP o link é http://www.vps.fmvz.usp.br/CRAN/web/views/.
    • CRANTASTIC!: Excelente sítio com resumos de todos os pacotes do CRAN. Tem recursos para buscas de pacotes e funções por assuntos, resumos de cada pacote, avaliações de pacotes e muito mais. Juntamente com as taskviews, é o recurso básico para encontrar o pacote que você busca no R.




  • Toda função do R, tanto as funções da Base como funções de pacotes tem um help e muito fácil usar isso, basta executar uma das seguintes opções:
#como exemplo vamos usar a função ls()
?ls  #ou seja o comando é ?+"nome da função"
#ou então
help(topic="ls") #nome da função como argumento da topic da função help
  • Ao digitar uma das opções acima o R vai abrir uma janela (no RStudio vai abrir colocar esse resultado num dos painéis), com o help da função. Todos os "helps" do R tem a mesma estrutura como no exemplo abaixo da função ls():

Qualquer help tem a seguinte estrutura:

  • ls{Base} - nome da função e pacote a que pertence
  • List Objects - o que a função faz
  • Description - descrição do que a função faz
  • Usage - como usar a função (lista dos argumentos da função entre parênteses)
  • Arguments - explicação dos argumentos da função
  • Details - detalhes sobre a função e alternativas de uso
  • References - referências bibliográficas na função
  • See Also - veja também - links para outras funções relacionadas
  • Examples - códigos de exemplo de como usar a função (em geral podem ser enviados ao console da mesma forma que um script: CONTROL+R (Windows) ou COMMAND+ENTER (Mac)

Dois conceitos são fundamentais para trabalhar no R:

  • Área de Trabalho - é o local dentro do R onde você coloca os objetos criados durante a execução de scripts. Você pode visualizar/apagar os objetos no Console:
ls()  #ls= listar - já vimos que isso lista os objetos criados por você e que estão na área de trabalho
 
?rm #veja o help desta função
rm(objum) #rm = remover - esta função apaga objetos da área de trabalho. No exemplo estamos apagando o objeto chamado objum, criado anteriormente
ls()  #note agora que o objeto não existe mais
 
rm(list=ls()) #desse jeito apagamos todos os objetos que criamos anteriormente
ls() #note que não sobrou nenhum objeto
  • Pasta de Trabalho - é o local (pasta) no seu computador que o R usa para salvar arquivos. É o caminho padrão para o R encontrar arquivos de dados, scripts, etc. Você pode trabalhar no R sem definir uma "Pasta de Trabalho" mas é muito mais simples se você usa este recurso. Experimente a seguinte script:
getwd()  #o nome desta função é abreviação de "get working directory" ou seja "pega a pasta de trabalho definida". A resposta deste código varia dependendo do seu sistema operacional. Mas a função retorna o caminho completo da pasta de trabalho atual
#[1] "/Users/BetoVicentini" #esta é a resposta na minha máquina
  • Toda vez que você usar o R, é boa prática, definir a "pasta de trabalho", que é o local no seu HD onde você guarda os arquivos relacionados ao seu projeto (dados, scripts, resultados, etc.).
    • Você pode definir a "pasta de trabalho" usando o menu do R (Arquivo ⇒ Diretório de Trabalho no Windows; ou Misc ⇒ Muda Pasta de Trabalho no Mac);
    • Ou você pode usar uma função:
?setwd #veja o help da função que iremos utilizar
minhapasta = "/Users/BetoVicentini/Desktop/bot89-2016"
#se estiver usando windows:
#minhapasta = "c:/Users/BetoVicentini/Documents/bot89-2016" 
#minhapasta = "c:\\/Users\\/BetoVicentini\\/Documents\\/bot89-2016"  #talvez precise usar barras invertidas
 
setwd(dir=minhapasta) #usa a funçao "set working directory" para especificar o diretório (pasta) de trabalho 
#note que eu defini dir primeiramente como o objeto "minhapasta" usei esse objeto para especificar o objeto "dir", que é o único argumento da função setwd()
  • Objetos criados no R por você podem ser salvos como um arquivo no seu computador. Pode usar o Menu do R ou RStudio para isso, ou pode usar o comando abaixo:
?save  #veja o help desta função que vamos utilizar
?save.image #veja o help desta função que vamos utilizar
 
#se sua área de trabalho estiver vazia
ls() #se nao retorna nada porque voce apagou acima
#crie alguns objetos para o exercício
objum = "um objeto de texto qualquer"
objum
objdois = 18 #um objeto com um número qualquer
objdois
banana = objum #um objeto idêntico a objum
 
#pronto, agora mostre todos os objetos na sua AREA DE TRABALHO
ls()
 
#agora salve esse objetos como um arquivo na sua PASTA DE TRABALHO
getwd()  #veja onde o arquivo será salvo
 
#se voce quer salvar todos os objetos
save.image(file='meusObjetos.Rdata') 
 
#se voce quer salvar apenas alguns objetos
save(objum,banana,file='meusObjetos2.Rdata')
 
#veja que na sua pasta de trabalho getwd() voce tem esses arquivos
dir() #lista arquivos na sua pasta de trabalho (análoga a função ls() que lista objetos)
dir(pattern="Rdata")  #lista apenas arquivos que tem no nome ".Rdata"
 
#apaga os objetos todos
rm(list=ls())
ls() #note que não tem mais objetos na sua área de trabalho, mas pode resgatar objetos que salvou num arquivo Rdata:
load(file="meusObjetos2.Rdata")  #puxa os objetos neste arquivo que está na sua pasta de trabalho
ls() #note que ele puxou os objetos objum e banana que salvamos acima neste arquivo
 
#puxe o outro arquivo gerado
load(file="meusObjetos.Rdata")  #puxa os objetos neste arquivo que está na sua pasta de trabalho
ls() #veja novamente os objetos na sua área de trabalho: Todos os objetos são listados. Se fizer isso e já houver objetos com o mesmo nome na sua área de trabalho, estes serão sobrepostos.
  • Portanto, Área de Trabalho e Pasta de Trabalho são dois conceitos fundamentais que você precisa entender bem, pois define como e onde você estará salvando informação quando usar o R, tanto em termos de objetos (área de trabalho) como em termos de arquivos (pasta de trabalho).
  • Se você digita q(), que é a função para sair do R ele geralmente te pergunta se você quer salvar os objetos numa área de trabalho padrão (que o R puxa quando você o inicia):
q()  #sai do R
#vai perguntar no Console algo do tipo "Save workspace image to ~/Desktop/bot89-2016/.RData? [y/n/c]:"
#note que o arquivo não tem nome apenas extensão ".RData" e é salvo na pasta de trabalho definida com setwd().
  • Códigos de scripts podem ser executados no console sem necessidade de abrir o script. Por exemplo, suponha que eu tenha salvo o seguinte script num arquivo "script01.R":
objum = "meu primeiro objeto de texto"
objdois = 18 #meu primeiro objeto numérico
banana = objum
  • Se este arquivo Scrip01.R está na minha pasta de trabalho, então posso executá-lo com a função source()
dir(pattern=".R") #mostra os arquivos .R que estão na pasta de trabalho
rm(list=ls()) #apaga todos os objetos, para ver que ele irá criar os objetos indicados no arquivo
ls()  #nao tem nenhum objeto
source("script01.R") 
ls() #os objetos foram criados como especificado no script
  • Você irá manipular diversos arquivos durante a execução de qualquer projeto e precisa organizar os arquivos para não se perder e poder voltar a eles quando necessário.
  • A grande vantagem de realizar a análise de dados, produção de figuras, etc no R (e RStudio) é criar um processo replicável e é preciso ser bem organizado com os arquivos para poder reutilizar o processo com novos dados ou adaptá-lo para novas análises. Isso implica, entre outras coisas:
    • Organizar o projeto em uma pasta no seu computador exclusiva para ele;
    • Definir um critério lógico para dar nome aos arquivos do projeto;
    • Organizar arquivos em subpastas segundo a necessidade, por exemplo, uma subpasta para dados, outra para figuras, outras para tabelas geradas e outros resultados. Pode inclusive colocar a criação dessas pastas nos scripts do R, que ele cria na pasta de trabalho ('getwd()') que deve ser a pasta do seu projeto através de (funções do R para manipular arquivos e pastas);
    • O código dos seus scripts devem ser escritos de forma genérica para que ele possa ser usado com qualquer outro conjunto de dados que tenha a mesma estrutura que os seus (variáveis). Ou seja, o código deve ser escrito não em função do conteúdo dos seus dados mas apenas na estrutura (i.e. as colunas dos seus dados) deles. Esta é a chave para uma programação eficiente e para replicabilidade. Isso significa que um resultado obtido a partir dos seus dados não deve ser manualmente atribuído a nenhum objeto no script, apenas atribuído a partir do objeto contendo o resultado.
  • A definição da pasta de trabalho ('working directory') é fundamental simplificar a leitura de dados e salvar arquivos sem se preocupar com o caminho completo ('full path') para cada arquivo, mas apenas o caminho relativo ('relative path'). Por exemplo, um arquivo numa pasta de projeto pode ter como caminho completo '/home/usuario/Desktop/meuprojeto/dados/morfometricos.xlsx', e o caminho relativo à pasta de trabalho seria apenas 'dados/morfometricos.xlsx'. Da mesma forma para salvar resultados a partir do R.
  • O RStudio facilita esse processo para você, permitindo que você criei um projeto, que basicamente consiste em definir uma pasta de trabalho e toda vez que você abre o projeto ele define automaticamente a sua pasta como pasta de trabalho. Alternativamente você pode simplesmente indicar toda vez que vai trabalhar num projeto o caminho para ele usando as funções 'getwd() setwd()' no console ou script;
  • Abrir e fechar parênteses, colchetes e aspas é um dos erros mais comuns;
  • Textos são especificados dentro de Aspas ("") ou Aspas Simples ('') - tanto faz qual você usa, o importante é sempre que abrir aspas fechar as aspas com o mesmo tipo. Se teu texto tem acentos use aspas duplas para delimitar ele. Aspas simples podem entrar num texto definido por aspas duplas. Rode isso no seu console:
objum = "um texto com 'aspas simples'"
objum
 
obj2 = 'um texto com "aspas simples"'
obj2
#note que foi adicionada uma barra invertida, porque \" na sintaxe do R significa aspas para confundir com as aspas que você usa para indicar textos.


  • Números são sempre especificados sem aspas, se colocar entre aspas, será interpretado como texto
obj1 = 18
obj1+1 #essa fórmula irá funcionar porque obj1 é um número
obj2 = "18"
obj2+1 #isso não vai funcionar porque obj2 não é um número


  • Nomes de objetos não podem ter espaço em branco e aspas são ignoradas:
obj 1 = "meutexto" #nao vai funcionar
obj1 = "meutexto" #vai funcionar
obj1
 
"obj1" = "meu texto" #vai criar objeto obj1, ignorando as aspas
obj1
obj"1" = "meu texto" #nao vai funcionar


  • Atribuição de valores à objetos pode ser feita com dois operadores equivalentes (= ou ⇒ ou ⇐):
obj1 = "meu texto"
 
#ou pode escrever assim
obj1 <= "meu texto"  #atribui
 
#ou assim
"meu texto" => obj1  #atribui
obj1 


  • Se você tiver dificuldade no entendimento de um script do R que está tentando rodar, separe os termos das linhas e expressões para entender o que cada parte está fazendo. Também pode alterar os valores dos argumentos para entender o funcionamento de uma função, ou simplesmente digitar a função sem os parênteses para ver o script que ela contém:
#uma expressão simples usando o dados iris que vem com o R
 
obj1 = paste(levels(iris$Species),tapply(iris$Sepal.Length,INDEX=iris$Species,mean,na.rm=TRUE),sep=" sépala média = ")
 
#separando as partes (cada função na sua expressão):
str(iris) #veja a estrutura
summary(iris) #veja o que é iris
#note que iris$Species contem 50 valores para tres nomes e portanto eles estao sendo intepretados como categoria (é um fator)
 
#veja os níveis do fator que é o primeiro elemento da funcao acima
levels(iris$Species) #categorias especies do objeto factor iris$Species
 
#o segundo elemento é o resultado de:
tapply(iris$Sepal.Length,INDEX=iris$Species,mean,na.rm=TRUE) 
#que basicamente é o calculo da média dos 50 comprimentos de sépala para cada especie; 
#pode ver os elementos desta funcao para entender essa parte
 
#o último elemento é um argumento 'sep' da função paste():
#paste(, sep='sépala média = ') #indica que cola os dois vetores usando um separador sep = 'sépala média = '
 
#veja o resultado
obj1
 
#veja o conteúdo da função tapply (o script que ela executa quando você usa)
tapply

A. William N. Venables, Brian D. Ripley, 2002. Modern Applied Statistics with S. Fourth Edition. New York: Springer, ISBN 0-387-95457-0.

1)
Comprehensive R Archive Network, repositório oficial dos programas e pacotes do R
  • bot89/precurso/2instalando/inicio.txt
  • Última modificação: 07/19/2020 10:19
  • por labotam_admin