Esse conteúdo foi sistematizado como apoio didático às oficinas de linguagem R para iniciantes que ministro aos meus alunos.
O objetivo desse material é proporcionar uma base sólida, um entendimento amplo do funcionamento da linguagem R.
O conteúdo foi elaborado para que mesmo pessoas sem experiência em lógica de programação sejam capazes de executar todos os exemplos e compreender seus significados.
Que bom que você resolveu se aventurar no ambiente R. Ele é uma ferramenta poderosa para análise e visualização de dados.
O R é uma linguagem de programação e ambiente de software livre.
Devido ao seu poder e flexibilidade, é amplamente utilizado para análise estatística, manipulação de dados e visualização gráfica.
É possível encontrar uma vasta gama de pacotes que facilitam a realização de análises complexas e a criação de gráficos sofisticados.
Em minha formação como bióloga e cientista, dominar a linguagem R foi um fator importante para que eu tivesse autonomia na minha pesquisa.
Costumo dizer frequentemente a colegas e alunos que “o R é nosso amigo” e que não há motivos para ficar amedrontada(o) com a programação. Contudo, o R, assim como qualquer outra linguagem de programação, é apenas uma ferramenta. Embora seja uma ferramenta poderosa, a parte fundamental da análise de dados continua sendo a pessoa por trás do teclado. Nada substitui o seu conhecimento sobre o modelo de estudo e as perguntas científicas que só você pode formular.
Se você ainda não fez a instalação do R e do RStudio siga as etapas abaixo e garanta que está tudo funcionando antes de começarmos a compreender a linguagem R.
O R pode ser baixado e instalado a partir do site oficial do CRAN (Comprehensive R Archive Network).
Passos para instalação do R:
RStudio é um ambiente de desenvolvimento integrado (IDE) para R que facilita a programação e análise de dados.
Passos para instalação do RStudio:
Após instalar o R e o RStudio:
R.version
no
console do RStudio e pressionando Enter. Isso deve exibir informações
sobre a versão do R instalada. Mas sugiro que antes de testar você leia
toda essa parte introdutória do material.Na nossa rotina de estudos vamos utilizar scripts, que são arquivos de texto que contém uma série de comandos e instruções escritas. É um arquivo de texto simples, salvo com a extensão .R, que pode ser editado em qualquer editor de texto, mas podemos utilizá-lo com mais eficiência no RStudio. Um script pode conter uma sequência de comandos que são executados na ordem em que aparecem. Isso permite que você escreva e salve um fluxo de trabalho completo, como os exemplos disponíveis nessa aula.
Um script em R é uma ferramenta poderosa que facilita a programação e a análise de dados, permitindo que os usuários organizem, automatizem e compartilhem seu trabalho de maneira eficiente. Uma vez que você tiver seu script salvo, você poderá executar as mesmas análises novamente e até compartilhar o arquivo para que outros usuários executem essas análises.
Dentro do RStudio, para criar um script novo você pode usar um desses atalhos:
O RStudio vai apresentar muitos painéis que podem ser intimidadores para novos usuários. Não é preciso se preocupar em entender o funcionamento detalhado de todos eles logo no começo.
Vamos analisar quadro a quadro a aparência dessa janela e identificar os elementos básicos importantes para começarmos a trabalhar no RStudio.
Localizado na parte superior esquerda, este painel é onde você pode escrever e editar scripts em R. Ele permite criar novos arquivos, abrir scripts existentes e trabalhar com várias guias simultaneamente. Você pode executar código diretamente desse painel.
Abaixo do painel do script, o console exibe a saída de comandos R executados. É onde você pode interagir diretamente com a linguagem R, executar comandos linha a linha e ver resultados instantaneamente.
Localizado na parte superior direita, este painel é dividido em duas seções principais:
Ambiente: Exibe uma lista de objetos atualmente carregados na sessão, como data frames, vetores e listas, permitindo que você visualize suas variáveis e dados.
Histórico: Mostra um histórico dos comandos que foram executados na sessão atual, facilitando a revisão e reutilização de código.
Este painel, na parte inferior direita, é dividido em várias abas importantes:
Arquivos: Permite navegar por diretórios (pastas), abrir e gerenciar arquivos no seu sistema.
Plots: Exibe gráficos gerados na sessão. Você pode visualizar, salvar e exportar gráficos a partir dessa aba.
Pacotes: Mostra os pacotes R instalados, permitindo que você carregue ou instale novos pacotes facilmente.
Ajuda: Fornece acesso à documentação do R e de pacotes específicos. Você pode buscar ajuda sobre funções e pacotes diretamente nessa aba. Aqui que você vai encontrar a solução para muitas dúvidas.
Uma vez que você tenha o código no seu script é muito fácil executá-lo. Você pode executar diretamente no console ou executar o script todo.
Executar Linha por Linha: Selecione a linha que contém a definição da função e pressione Ctrl + Enter (ou Cmd + Enter no Mac). Isso enviará o código para o console e definirá a função.
Executar o Script Inteiro: Para executar todo o script, clique em Run no canto superior direito do painel de script ou pressione Ctrl + Shift + Enter (ou Cmd + Shift + Enter no Mac).
No script, o interpretador entende todo o texto precedido de # como um comentário.Ou seja, não é um código R e não será interpretado. Portanto trata-se de uma ferramenta para facilitar a interpretação do script pelo usuário.
Essa é uma ferramenta importante que pode facilitar muito seu aprendizado. Você pode, por exemplo, deixar avisos, mensagens, lembretes e explicações importantes para o seu entendimento do código.
# Esse é um comentário e não vai ser interpretado pelo R, serve apenas para informar o usuário
R é uma linguagem super flexível, que permite utilizar programação orientada a objetos. Isso é particularmente útil quando estamos trabalhando com análise de dados. Mas o que vem a ser esses chamados ‘objetos’?
Em R, os objetos são qualquer entidade que pode armazenar dados ou informações e sobre a qual operações podem ser realizadas. Isso significa dizer que quase tudo em R é um objeto.
Para facilitar, podemos entender os tipos de objetos em R. Os objetos podem ser classificados em diferentes classes, e podem ser manipulados através de métodos ou funções específicas.
Em R, os tipos de dados são as formas mais básicas de representação de dados. Você também também encontrá-los nas suas leituras como tipos atômicos.
Vetores atômicos são caracterizados principalmente pela homogeneidade (todos os elementos de um vetor atômico devem ser do mesmo tipo) e unidimensionalidade (são dados unidimensionais).
# Exemplo:
v <- c(1, 2, 3) # Vetor numérico, todos os elementos são valores numéricos
v # para printar o vetor 'v' no console
## [1] 1 2 3
is.vector(v) # retorna 'TRUE'
## [1] TRUE
Também podemos checar se um objeto pertence a uma determinada categoria utilizando uma das funções predefinidas pelo formato ’is.*’. São um conjunto de funções que retornam um valor lógico (TRUE se for verdadeiro ou FALSE se for falso).
Por exemplo, para checar se o objeto ‘v’ criado anteriormente é de fato um vetor, podemos utilizar a função ‘is.vector(v)’. É como se perguntássemos ao interpretador “Esse objeto é um vetor?” ao que ele responde sim (TRUE) ou não (FALSE).
# Exemplo:
is.vector(v) # retorna 'TRUE'
## [1] TRUE
is.data.frame(v) # retorna 'FALSE', visto que 'v' é um vetor e não um 'data frame'
## [1] FALSE
Representa números (decimais ou inteiros).
Por padrão, números são tratados como números de ponto flutuante (decimais).
# Exemplo:
x <- 10.5 # Numérico (ponto flutuante)
x # para printar o valor no console
## [1] 10.5
y <- 5 # Numérico (inteiro tratado como decimal)
y # para printar o valor no console
## [1] 5
Você pode usar uma função (logo mais veremos o que são funções, não se preocupe) para identificar o tipo de um objeto. Existem muitas funções disponíveis mas agora, para fins didáticos, vamos usar a função ‘class()’, que recebe como argumento o objeto que criamos contendo o valor.
y <- 5
y # para printar o valor no console
## [1] 5
class(y) # retorna "numeric"
## [1] "numeric"
Representa números inteiros. Você pode criar valores explicitamente inteiros usando o sufixo L.
# Exemplo:
z <- 10L # Inteiro
z # para printar o valor no console
## [1] 10
class(z) # retorna "integer"
## [1] "integer"
Representa strings de texto (sequências de caracteres). Strings em R são criadas usando aspas duplas (“) ou simples (’), é indiferente a escolha entre as duas.
# Exemplo:
texto <- "Sapos são legais!" # Caractere
texto # para printar o valor no console
## [1] "Sapos são legais!"
class(texto) # retorna "character"
## [1] "character"
Representa valores booleanos (verdadeiro ou falso), sendo TRUE ou FALSE os dois únicos valores possíveis.
# Exemplo:
b <- TRUE # Verdadeiro
c <- FALSE # Falso
b # para printar o valor do objeto 'b' no console
## [1] TRUE
c # para printar o valor do objeto 'c' no console
## [1] FALSE
class(b) # retorna "logical"
## [1] "logical"
Usados para representar dados categóricos, como níveis de uma variável qualitativa. Fatores são essencialmente inteiros com rótulos.
# Exemplo:
f <- factor(c("pequeno", "grande", "médio")) # Fator categórico
f # para printar o fator 'f' no console
## [1] pequeno grande médio
## Levels: grande médio pequeno
is.factor(f) # retorna 'TRUE'
## [1] TRUE
Além dos tipos atômicos, é importante lembrar que esses tipos são usados dentro de estruturas de dados como vetores, listas, matrizes e data frames. Nesses casos, o tipo de dado atômico define o conteúdo dos elementos.
Diferentemente dos vetores atômicos, as estruturas de dados compostas agrupam tipos de dados heterogêneos, ou seja, podem conter elementos de diferentes tipos ou formatos.
Uma lsita é um tipo de vetor. Listas são estruturas que podem conter diferentes tipos de dados, incluindo outros objetos, como vetores, matrizes, e até outras listas. Listas são muito flexíveis e podem armazenar qualquer tipo de objeto.
# Exemplo:
l <- list(1, "texto", TRUE) # Lista com tipos mistos
l # para printar a lista 'l' no console
## [[1]]
## [1] 1
##
## [[2]]
## [1] "texto"
##
## [[3]]
## [1] TRUE
is.list(l) # retorna 'TRUE'
## [1] TRUE
Organizam dados em mais de uma dimensão, como tabelas (linhas e colunas) ou matrizes de várias dimensões.
Estruturas bidimensionais que contêm elementos de um único tipo. São essencialmente vetores com dimensões (linhas e colunas).
# Exemplo:
m <- matrix(1:6, nrow = 2, ncol = 3) # Matriz 2x3 (2 linhas x 3 colunas)
m # para printar a matriz 'm' no console
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
is.matrix(m) # retorna 'TRUE'
## [1] TRUE
Objetos com mais de duas dimensões, como uma generalização das matrizes. Os arrays podem ter qualquer número de dimensões.
# Exemplo:
a <- array(1:12, dim = c(2, 3, 2)) # Array com 3 dimensões
a # para printar o array 'a' no console
## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] 7 9 11
## [2,] 8 10 12
is.array(a) # retorna 'TRUE'
## [1] TRUE
Um tipo especial de lista em que todos os elementos são vetores de mesmo comprimento. São amplamente usados para representar dados tabulares. Ou seja, são como tabelas, onde cada coluna pode ter um tipo de dado diferente.
# Exemplo:
df <- data.frame(nome = c("Ana", "Beto"), idade = c(30, 40)) # Data frame com colunas de tipos diferentes
df # para printar a data frame 'df' no console
## nome idade
## 1 Ana 30
## 2 Beto 40
is.data.frame(df) # retorna 'TRUE'
## [1] TRUE
Até mesmo as funções são objetos em R. Elas podem ser atribuídas a variáveis e passadas como argumentos para outras funções. Não é necessário se aprofundar nos detalhes das funções nesse primeiro momento, basta saber que elas também são objetos.
# Exemplo:
f <- function(x) x^2 # Função que calcula o quadrado de um número
f # para printar a função 'f' no console
## function(x) x^2
is.function(f) # retorna 'TRUE'
## [1] TRUE
f(2) # executa a função e retorna o resultado ( 2 ao quadrado é igual a 4)
## [1] 4
O R ainda permite trabalhar com outros obejtos, como modelos estatísticos (lm, glm etc.) e objetos de sistemas de orientação a objetos (S3 e S4). Nosso objetivo nesse momento não é detalhar as complexidades desses tipos de objetos. Vamos explorar mais a linguagem R e suas funcionalidades.
Até agora você já conhece duas formas de verificar o tipo de dados em R:
1- a função ‘class()’ 2- e as funções predefinidas pelo formato ’is.*‘, como ’is.numeric()’ e ‘is.vector()’
Uma outra opção é a função ‘typeof()’: Enquanto ‘class()’ mostra a classe a que o objeto pertence ‘typeof()’ retorna o tipo interno do dado.
# Exemplo:
x <- 42 # atribui o valor de 42 ao objeto 'x'
typeof(x) # Retorna "double" (ponto flutuante)
## [1] "double"
class(x) # Retorna "numeric"
## [1] "numeric"
É possível converter tipos de dados em R usando funções como as.numeric(), as.character(), as.logical() etc.
# Exemplo:
a <- "42" # Atribui o valor de "42" ao objeto 'x'
class(a) # Retorna 'character'
## [1] "character"
a # Note que o número está grafado entre aspas.
## [1] "42"
# Esse formato na linguagem R significa que este número está armazenado como um 'character' ou 'string', ou seja, como texto.
b <- as.numeric(a) # Converte a string "42" para número 42
class(b) # Retorna 'numeric'
## [1] "numeric"
São a base para manipulação de dados e construção de estruturas mais complexas em R. São homogêneos e unidimensionais
Agrupam tipos de dados heterogêneos, ou seja, podem conter elementos de diferentes tipos ou formatos. Exemplos: listas e data frames.
Organizam dados em mais de uma dimensão, como tabelas (em linhas e colunas) ou matrizes de várias dimensões. Exemplos: matrizes e arrays.
Espero que esse material tenha ajudado de alguma forma e fico à disposição para esclarecer o que for necessário.
Dra. Fernanda Rodrigues de Avila https://avilaf.github.io/