Ferramentas do usuário

Ferramentas do site


cursos:ecor:02_tutoriais:tutorial1b:start

Essa é uma revisão anterior do documento!


1b. Introdução ao R: ambiente de programação

O Ambiente de Programação

mapa20.png Agora que apresentamos as bases conceituais e da sintaxe da linguagem R é o momento de entender o ambiente de programação a que a linguagem está associada. O R não é só o interpretador da linguagem. Existe toda a gestão da informação que transita nessa nossa conversa com o R. Para ser um bom usuário do R é importante que entenda como essa interação se dá e é preciso se localizar nesse ambiente que é nossa oficina virtual de criação. Até aqui já entendemos que nesse ambiente de programação há dois espaços distintos: o código ou script e o interpretador do R! Pois bem, esses são os limites do nosso ambiente, nossa ligação com o R que é o script e a conexão com a linguagem de máquina que é o interpretador!

Entre esses extremos existem espaços virtuais 1) que organizam o fluxo da informação e seu armazenamento. Por exemplo, criamos objetos e acessamos aquilo que foi atribuído a ele e também manipulamos esse objeto com outros objetos da classe função. Mas onde o objeto criado fica armazenado? De onde vem a função que utilizamos? Como faço para acessar meu script de uma sessão do R?

O Mapa do R

Nosso exemplo de como se organizar no R aqui, será com o ruWindows. Não porque gostamos do sistema operacional, mas simplesmente porque é o sistema mais utilizado. A lógica é a mesma para outros sistemas operacionais, com macOS e Linux, com pequenas variações.

Organize suas pastas

Antes de começar um novo projeto, uma nova análise de dados por exemplo, crie uma pasta2) de trabalho específico para o projeto, com o menu Arquivo>Novo>Pasta do ruWindows explorer. Por exemplo, para esse curso você pode criar uma pasta cursoR e dentro dela uma outra como aula01Intro e dentro dessa pasta, colocar o script que fizemos na aula anterior tutorial01.r .

cria_pasta_windows.png

crie um diretório de projeto

Após criar as pastas, execute o R a partir do atalho do ruWindows ou pelo menu de programas no computador ou na barra de ferramentas.

clique_atalho_r.png clique_barra_ferram-r.png

Diretório de Trabalho

A primeira coisa que deve fazer ao iniciar uma sessão do R é verificar qual é o diretório3) de trabalho que o R está vinculado. Essa pasta é a conexão da sua sessão do R com a memória de disco do seu computador. Podemos acessar o endereço da pasta no computador, com o comando:

getwd()

Ao iniciar o R pelo atalho da área de trabalho do ruWindows o diretório de trabalho será sempre o mesmo, possivelmente em “Meus Documentos”, e.g.:

[1] "C:/Documents and Settings/Administrador/Meus documentos"

Para mudar o diretório usamos a função setwd, de set work directory:

setwd("C:/Documents and Settings/Administrador/Meus documentos/cursoR/aulaIntro")

IMPORTANTE: as barras de endereço devem ser no padrão Linux, ou seja, barras simples e não dupla invertida como a utilizada em ruWindows. Um erro comum no R é esquecer as s ao digitar o endereço do diretório de trabalho, veja Os 10 Mandamentos do R.

Verifique se mudança funcionou, com um novo comando getwd:

getwd()

Caso esteja no diretório de trabalho desejado é possível listar todos os arquivos da pasta utilizando uma das funções abaixo:

dir()
list.files()

Caso não tenha colocado o script da aula anterior nessa pasta, coloque e rode novamente o código acima para verificar se está tudo certo.

Rodando o script

Vimos no tutorial anterior como rodar o script a partir do código aberto no GUI do R. Podemos também rodar o script inteiro, a partir de um arquivo, utilizando a função source que apresenta um argumento chamado file 4).

source(file = "tutorial01.r")

Workspace do R

Todo objeto criado em uma sessão do R fica armazenado, durante a sessão, na área de trabalho 5). Para não confundir a área de trabalho do R com a área de trabalho do ruWindows, vamos aqui utilizar o termo workspace para designar a área de trabalho do R. Na nossa metáfora da oficina, podemos dizer que a área de trabalho do R é a nossa bancada, onde temos os objetos que estamos trabalhando. bancada.png

Podemos listar os objetos do workspace do R com a função ls ou objects. Antes de usar veja a documentação da função. A documentação do help no R é padronizada e na descrição é sempre fornecida, entre outras, a informação sobre o que é retornado e qual o formato desse output. Vamos encontrar essa informação na documentação:

help(ls)

A documentação reporta que ls and objects return a vector of character strings…“. Como acabamos de carregar o script da aula passada nessa sessão do R, o workspace deve conter, entre outros, os objetos que criamos, como dez, cem, contadez, etc… Vamos verificar:

ls()

Caso tenha muitos objetos na sua área de trabalho, uma forma de selecionar os objetos é usar o argumento pattern:

ls(pattern="co")

O código acima pede para listar os objetos do workspace que tenham co em algum lugar do nome, o resultado deve ser:

[1] "contadez"    "copa70"      "copa94"      "descontadez" 

Um conceito básico do R é que o resultado retornado por uma função pode ser atribuído a um objeto:

objetosCo <- ls(pattern = "co")
objetosCo
class(objetosCo)

Note que o objetosCo é um vetor da classe characters e contém os nomes dos objetos que apresentam co no nome.

Os objetos que estão no workspace podem ser salvos no seu diretório de trabalho utilizando a função save. A função save.image é um atalho da função save para salvar todos os objetos do workspace. O arquivo salvo, em geral, tem a extensão .RData6). Vamos salvar os objetos que tem o padrão co no nome no nosso diretório de trabalho e em seguida certifique-se de que o arquivo RData foi criado:

save(list=ls(pattern="co"), file="coObjetos.RData")
list.files()

Agora, vamos salvar todas os objetos do workspace e verificar se foi criado o arquivo!

save.image()
list.files(all.files=TRUE, pattern=".RData")

Como não fornecemos nenhum nome de arquivo 7) para a função save.image, ela por padrão cria um arquivo com o nome .RData. Arquivos começando por . em geral, são arquivos que ficam oculto no sistema operacional, por isso usamos o argumento all.files = TRUE na função list.files. Dessa forma podemos ver os arquivos ocultos no diretório de trabalho.

Vamos criar agora um objeto que contenha todos os nomes dos objetos dessa sessão e em seguida vamos fechar a sessão do R, tomando o cuidado de respoder sim à pergunta se quer salvar a imagem da sua sessão!.

allobj <- ls()
allobj

.RData automático

Agora com a sessão do R desligada, abra o gerenciador de arquivos, Windows Explorer, na pasta criada no inicio desse tutorial, nossa sugestão foi algo como:

"C:/Documents and Settings/Administrador/Meus documentos/cursoR/aulaIntro"

Deve existir um arquivo com o nome .RData que listamos na nossa sessão do R. Entretanto, como se trata de arquivo oculto, normalmente o sistema operacional não mostra!

Mostrando Arquivos Ocultos

Veja como configurar essa opção no ruWindows:

ligue exibição arquivos ocultos

arquivos_ocultos.png

.RData: iniciando uma sessão

Caso o gerenciador de arquivos já esteja configurado para mostrar arquivos ocultos, você verá o arquivo .RData na pasta.

clique no arquivo .RData

arquivos_gerados.png

Clique nesse arquivo .RData, descrito como R Workspace. Uma sessão do R deve-se abrir automaticamente.

Verifique quais objetos estão no workspace da sessão aberta e qual o diretório de trabalho que está conectado a essa sessão:

ls()
getwd()
ls(pattern = "obj")

Acabamos de ensinar como abrir uma sessão do R com todos os objetos criados na última sessão aberta do R e apontando para o diretório de trabalho desejado. Isso é uma forma eficiente de reiniciar uma sessão do R que foi interrompida!

Note que o allobj está entre os objetos que foram carregados pelo .RData. Ele foi criado depois que utilizamos a função save.image. Isso acontece porque ao fechar a sessão concordamos em salvá-la e por padrão o R executa save.image() antes de fechar. O arquivo .RData salvo anteriormente foi sobrescrito pelo novo .RData que contem o allobj.

.RData: um problema!

'And he thinks I'm slow!'

Quando iniciamos uma sessão do R pelo menu ou por um atalho da área de trabalho do Windows, ele automaticamente busca um arquivo .RData no diretório de trabalho a que está vinculado e carrega automaticamente esse .RData. Caso o usuário tenha o hábito de abrir o R sempre do mesmo atalho e sempre salvar ao fechar a sessão, o arquivo .RData rapidamente se torna um monstro devorador de memória, com todos os objetos criados em todas as sessões do R que foram trabalhadas. Como o R armazena o workspace da sessão na memória RAM do computador, logo seu computador irá parecer uma carroça velha, mesmo se for um Mac de 50 mil reais!


Uma nova sessão

Quando iniciamos um novo projeto é desejável que a nossa bancada de trabalho ou workspace do R esteja limpo. Não é aconselhável trabalhar em uma oficina bagunçada e cheia de material que não será utilizado na tarefa a ser executada, não é muito eficiente.

Para remover objetos do workspace usamos o comando rm que é um atalho para a função remove. Primeiro, como sempre devemos fazer, vamos consultar a documentação:

help(rm)

Removendo todos os Objetos

A documentação do rm nos diz que o argumento list deve receber uma vetor de caracteres com o nome dos objetos que devem ser removidos. Como queremos remover todos os objetos, podemos usar a sintaxe de aninhamento de funções do R. Veja como ficaria um comando para listar todos os objetos do workspace do R e ao mesmo tempo removê-los

rm(list = ls())

Note que estamos fornecendo ao argumento list da função rm o que a função ls() nos retorna: a lista do nome de todos os objetos do workspace, na forma de um vetor de caracteres.

Verifique novamente o workspace para garantir que esteja vazio e salve o workspace!

ls()
save.image()

Agora vamos simular a perda dos objetos: saia do R, respondendo “NÃO” à pergunta “Salvar Área de Trabalho”8).

Abra o R de novo a partir do .RData. Tudo perdido? Não! Com o código salvo (script) você pode executá-lo novamente, e recuperar todo o trabalho. Repita o procedimento novamente de abrir o arquivo de script e rodá-lo ;-).

source(file = "tutorial01.r")
ls()

Iniciando um novo projeto

  • Garanta que a sessão do R esteja conectada ao diretório de trabalho, que é a pasta onde deve estar os dados que será usado e onde iremos salvar os resultados e gráficos realizados
  • Verifique se o workspace está limpo, e caso não esteja, remova todos os objetos que não serão utilizados no projeto. Preferencialmente ele deve estar limpo.
  • Não se preocupe com o .RData, concentre-se no script, salve o arquivo com frequência e deixe ele bem documentado. Caso tenha problema na sessão do R, precisa apenas rodar o script novamente e continuar o trabalho pelo script.

Onde estão as Funções?

O nosso workspace do R armazena todos os nossos objetos em uma sessão. Entretanto, estamos usando objetos de funções o tempo inteiro. Onde estão as funções? Para responder essa pergunta vamos executar a função abaixo:

search()

O resultado deve ser algo como:

 [1] ".GlobalEnv"        "package:stats"    "package:graphics" 
 [4] "package:grDevices" "package:utils"    "package:datasets"
 [7] "package:methods"   "package:base"      

O search() retorna os pacotes que estão carregados na sua sessão do R. Pacotes são conjuntos de ferramentas associadas a algum conjunto de tarefas. Na nossa metáfora da oficina os pacotes são os armários onde guardamos nossas ferramentas. Por padrão o R abre alguns desses armários quando inciamos uma sessão, os armários com as ferramentas básicas: são eles que contem as funções que estamos usando.

Além desses pacotes, existem outros que são distribuídos junto ao programa R, mas que não são abertos na sessão por padrão. São pacotes importantes, mas são um pouco mais específicos. São como armários que estão trancados, precisamos destrancar e abrir para poder usar as ferramentas que estão neles. Para acessar esses pacotes utilizamos a função library que nos mostra os pacotes que estão instalados no nosso computador:

 library()

Por exemplo, temos o pacote lattice descrito como: “A powerful and elegant high-level data visualization…”. Uma das funções desse pacote é bwplot para a construção de boxplot. Se tentarmos consultar a documentação dessa funções:

help(bwplot)

A resposta é que não há documentação associada.

Carregando Pacotes

Para utilizar as funções de um pacote, não basta o pacote estar instalado no computador, é necessário carregá-lo, ou seja abrir o armário contém as ferramentas! Para isso usamos a própria função library :

library("lattice")
search()

Agora o pacote lattice aparece na segunda posição do nosso search. O que isso significa? Cada uma das posições que o search apresenta, representam o caminho de busca do R na memória. São como compartimentos 9) de memória. Quando executamos um comando o R busca os objetos na memória seguindo trajeto apresentado pelo search. O primeiro compartimento que é procurado se chama .GlobalEnv. Esse é o compartimento de memória do nosso workspace e o pacote que foi carregado recentemente é colocado na posição seguinte. O último compartimento é dedicado ao pacote base onde estão os objetos e funções básicas do R.

Agora a função bwplot está disponível para ser utilizada. Como ainda não ensinamos a fazer gráficos, é possível pedir auxílio para a própria função mostrar o que ela é capaz de fazer. Na documentação da função há uma sessão dedicada a exemplificar o uso da função. É possível copiar e colar esse código para executar os exemplos, ou usar a função example que extrai e roda os exemplos:

help(bwplot)
example(bwplot)

Quais funções estão disponíveis em um pacote instalado? Qual documentação está disponível junto ao pacote? Essas informações podem ser encontradas em um outro tipo de ajuda de documentação do R, o help.start. Que abre toda a documentação geral do R que foi instalada no computador. Apesar de ser um hipertexto, ela está localmente instalada e não precisa de internet para ser aberta. Para encontrar a documentação específica de um pacote instalado entre no link Packages. Navegue nessa documentação para se habituar a ela.

help.start()

Instalando Pacotes

Quando estamos trabalhando em uma oficina normalmente chegamos a um ponto em que precisamos de uma ferramenta que não está disponível localmente. Nesses momentos precisamos nos deslocar até uma loja especializada para adquirir as ferramentas necessárias. As loja do R são os repositórios, entre eles o principal e oficial é o CRAN https://cran.r-project.org/. Entre os três principais repositórios 10), em consulta feita em 31 de julho de 2020, existiam 20.205 pacotes contendo mais de 3,1 milhões de funções disponíveis para o R11)!

Pacotes são conjuntos de funções específicas do R, distribuídos em conjunto. No repositório do R estão armazenadas uma quantidade muito grande de pacotes que geralmente tem funções para um certo conjunto de tarefas associadas (p.ex: análise de padrões espaciais de pontos). Para usar um pacote é necessário entender a diferença entre baixar o pacote (download) do repositório e carregar o pacote na sua área de trabalho. Veja a apostila para mais detalhes se houver ainda dúvidas sobre como usar pacotes

Quais pacotes estão disponíveis na sua instalação de R? Você pode verificar isto com o comando:

library()

Outra maneira é iniciar a interface hipertexto de ajuda com:

help.start()

E escolher o link “Packages”, que você terá a lista do pacotes já instalados. Na interface hipertexto clique no nome de um dos pacotes. Você verá a lista de todos os objetos que este pacote contém.

Quais pacotes estão carregados? Uma maneira simples de descobrir é com o comando:

search()

Agora vamos gerar 15 números sorteados de uma distribuição normal, com média 1 e desvio-padrão=3, e guardar o resultado no onbjeto x1:

x1 <- rnorm(n=15, mean=1, sd=3)

Para fazer um histograma deste valores, há a função hist, do pacote graphics:

hist(x1)

Mas há também a função truehist, do pacote MASS:

truehist(x1)

Este comando retornará uma mensagem de erro, que avisa que o R não encontrou o objeto truehist. Para que isso não aconteça, é preciso carregar o pacote MASS, que já está instalado na distribuição básica do R:

search()
library(MASS)
search()
truehist(x1)
1)
tecnicamente chamados no R de environments
2)
diretório é o termo técnico
3)
o nome técnico das pastas do computador
4)
sempre consulte a documentação antes de usar uma nova função
5)
tecnicamente chamado de Global Environment ou Workspace
6)
pode encontrar também como sendo .Rda, existe outro formato de arquivo de dados no R que é o .Rds que armazena apenas um objeto
7)
argumento file =
8)
detalhes na apostila
9)
chamados de “Environments”
10)
CRAN, GitHub e Bioconductor
cursos/ecor/02_tutoriais/tutorial1b/start.1596209293.txt.gz · Última modificação: 2020/07/31 12:28 por adalardo