Interagindo com o computador

O que significa este ícone?


  • É um documento do Microsoft Excel?
  • É um arquivo de texto pleno, separado por vírgulas (CSV comma separated values)
  • De fato, o nome do arquivo é final.csv e não final
  • O Excel pode sim abrir este arquivo… assim como milhares de outros programas!

O que está acontecendo?

  • O computador (leia-se, nesse caso, o sistema operacional Windows) “proteje” o usuário dos detalhes sujos
  • Isso é ruim? Sim!
  • O usuário se acostuma com o computador ditando as regras
  • É importante lembrar que é você quem deve dizer o que o computador deve fazer (nesse caso, com qual programa abrir certo arquivo)

O que deve acontecer?

  • Para a maioria dos usuários, a interação com o computador se limita a clicar em links, selecionar menus e caixas de diálogo
  • O problema com essa abordagem é que parece que o usuário é controlado pelo computador
  • A verdade deve ser o oposto!
  • É o usuário que possui o controle e deve dizer para o computador exatamente o que fazer
  • Escrever código ainda tem a vantagem de deixar registrado tudo o que foi feito

Uma linguagem de programação nos permite interagir não só com outros softwares, mas também com o nosso hardware

Boas práticas para a computação científica

Cientistas passam cada vez mais tempo construindo e utilizando software. No entanto, a maioria nunca foi ensinada como fazer isso de maneira eficiente. Como resultado, muitos desconhecem as ferramentas e práticas que os fariam escrever códigos mais consistentes e fáceis de manter, com menor esforço.

Estudos recentes tem mostrado que cientistas passam cerca de 30% de seu tempo escrevendo códigos. No entanto, mais de 90% deles são primariamente auto-didatas, e portanto carecem de exposição à boas práticas de desenvolvimento de software como: escrever códigos de fácil manutenção, usar um sistema de controle de versões, rastreadores de bugs, testes unitários, e automação de tarefas.

Para promover, encorajar, e padronizar a reproducibilidade de investigações científicas, algumas práticas podem ser adotadas. De maneira específica, podemos listar oito práticas consideradas essenciais para que a reproducibilidade seja eficiente:

  1. Escreva programas para humanos, não para computadores
    1. Crie nomes consistentes, distintos e que possuam significado
    2. A formatação e estilo de código deve ser consistente
  2. Deixe o computador fazer o trabalho
    1. Crie funções para fazer tarefas repetitivas
    2. Use uma ferramenta de “construção” (make ou rmarkdown::render()) para automatizar workflows
  3. Faça alterações incrementais
    1. Trabalhe em pequenos passos e frequentemente revise o que foi feito b, Use um sistema controlador de versões
  4. Não repita você mesmo (ou outros)
    1. Faça o código modulável ao invés de copiar e colar
    2. Re-utilize código ao invés de reescrevê-lo
  5. Prepare-se para erros
    1. Use uma plataforma de testes independente
    2. Transforme bugs (ou resultados negativos) em estudos de caso
  6. Otimize código apenas depois que ele funcionar
    1. Primeiro a ideia, depois a otimização
    2. Escreva de maneira mais simples possível desde que não perca a eficiência
  7. Documente a ideia e o propósito, não a mecânica
    1. Descreva motivos e razões, não implementações
    2. De preferência, documente o processo com códigos embutidos em texto
  8. Colabore
    1. Use “programação em pares”
    2. Use um sistema de rastreamento de bugs e issues

(Baseada em Wilson et al, 2014).

Editores de texto

Uma característica importante de códigos de programação é que eles são em texto puro, por isso precisamos de um bom editor de textos

Características de um bom editor:

  • Identação automática
  • Complementação de parênteses
  • Destaque de sintaxe (syntax highlighting)
  • Numeração de linhas
  • Auto completar comandos

Editores para o R

  • Interface padrão
  • Rstudio
  • Emacs + ESS
  • Tinn-R
  • Vim-R-plugin
  • Gedit-R-plugin

Estilo de código

O estilo de código é importante pois é uma forma de padronizar a forma com que escrevemos o código. Essa padronização visa facilitar e otimizar a leitura do código por você no futuro ou por outras pessoas.

Existem vários estilos de código (coding standards) propostos para o R, no entanto, nenhum deles é “oficial”. Você pode se adequar a um estilo que achar mais apropriado, ou até mesmo criar o seu próprio estilo. O importante é que isso fique claro para quem for ler seu código posteriormente.

Alguns coding standards para o R são:

  • The tidyverse style guide é um documento compreensivo sobre formatação de códigos no R. Desenvolvido por Hadley Wickham, é um dos guias mais utilizados atualmente.
  • Google’s R Style Guide é o guia de estilo do R desenvolvido pelo Google. Atualmente é apenas uma modificação do The tidyverse style guide.
  • R Style Guide da JEFworks, com vaŕios exemplos de código.
  • R coding standards do manual oficial do R R Internals. Não é compreensivo, mas estabelece uma padronização de código para o editor Emacs.

Alguns mais expositivos são:

Uma primeira sessão

Configurando o diretório de trabalho

  • O diretório de trabalho é uma pasta onde o R será direcionado. Todos os arquivos que serão importados (base de dados, …) ou exportados (base de dados, gráficos, …) por ele ficarão nesta pasta.

  • Existem duas maneiras de configurar o diretório de trabalho (suponha que vamos usar a pasta ~/estatcomp1):

  • 1) Utilizando a função setwd() dentro do R:

setwd("~/estatcomp1")
  • 2) Pelo menu do RStudio em Session > Set Working Directory > Choose Directory... Confira o diretório que está trabalhando com a função
getwd()

O R como uma calculadora

O símbolo > indica que o R está pronto para receber um comando:

> 2 + 2
# [1] 4

O símbolo > muda para + se o comando estiver incompleto:

> 2 *
+ 2
# [1] 4

Espaços entre os números não fazem diferença:

> 2+         2
# [1] 4

Para onde vão os resultados?

> 1 + 3 + 5 + 7
# [1] 16

  • Note que o resultado é apenas mostrado na tela, nada é salvo na memória (por enquanto)

O editor de scripts

  • Para criar rotinas computacionais é necessário utilizar um editor de scripts.
  • Clique em File > New file > R script. Salve com a extensão .R.
  • Para enviar comandos diretamente para o console, selecione-os e aperte Ctrl + <Enter>.
  • Para adicionar comentários ao script, utiliza-se o símbolo # antes do texto e/ou comandos. O que estiver depois do símbolo não será interpretado pelo R. Portanto:
2 + 2     # esta linha será executada
# 2 + 2     esta linha não será executada

Ordens de execução

As operações são realizadas sempre seguindo as prioridades:

  1. De dentro para fora de parênteses ()
  2. Multiplicação e divisão
  3. Adição e subtração
5 * 2 - 10 + 7
# [1] 7
5 * 2 - (10 + 7)
# [1] -7
5 * (2 - 10 + 7)
# [1] -5
5 * (2 - (10 + 7))
# [1] -75

“Salvando” resultados

  1. Calcule a seguinte equação: \(32 + 16^2 - 25^3\)
  2. Divida o resultado por \(345\)
  3. Qual o resultado da expressão \(\frac{e^{-2} 2^{4} - 1}{4!}\)?
  4. E do logaritmo desta expressão?
x <- 32 + 16^2 - 25^3
x
# [1] -15337
x/345
# [1] -44.45507
(y <- (exp(-2) * 2^4 - 1)/factorial(4))
# [1] 0.04855686
log(y)
# [1] -3.02502

Quando criamos uma variável (x, y), ela fica armazenada temporariamente na memória RAM.

O R é uma linguagem de memória RAM

Para saber quais objetos estão criados, usamos a função ls()

ls()
# [1] "x" "y"

Estas variáveis ficam armazenadas no chamado workspace do R

  • O workspace consiste de tudo que or criado durante uma sessão do R, armazenado na memória RAM

Para efetivamente salvar esas variáveis, podemos armazenar esse workspace do R em disco, em um arquivo chamdo .Rdata

  • Quando o R é iniciado em um diretório com um arquivo .Rdata, as variáveis salvas são automaticamente carregadas
  • No entanto, é sempre melhor salvar os dados e o script, assim é possível gerar os resultados novamente, sem salvar nada sem necessidade
  • Veremos mais pra frente como salvar variáveis específicas, por exemplo, resultados de uma análise que leva muito tempo para ser executada
  • O mais importante é salvar o código, assim sabemos como chegamos a determinado resultado, e podemos recriá-lo depois

Finalizando o programa

A qualquer momento durante uma sessão você pode usar o comando

save.image()

No RStudio:

  • File > Save As...
  • Na janela que abrir, digite o nome do arquivo (por exemplo script_aula1) e salve
  • Automaticamente o script será salvo com a extensão .R (nesse caso script_aula1.R) no diretório de trabalho que você configurou no início

Alternativamente, você pode também salvar toda sua área de trabalho, clicando em Workspace > Save As Default Workspace. Este processo irá gerar dois arquivos:

  • .Rdata: contém todos os objetos criados durante uma sessão. Não é necessário (e nem recomendado) dar um nome antes do ponto. Dessa forma, a próxima vez que o programa for iniciado neste diretório, a área de trabalho será carregada automaticamente.
  • .Rhistory: um arquivo texto que contém todos os comandos que foram digitados no console.

Referências


Licença Creative Commons 4.0

Este conteúdo está disponível por meio da Licença Creative Commons 4.0