Workshop introdução a linguagem R - Prof. Thiago Marques

Primeiros passos

Atalhos importantes:

  • Roda uma linhas ou um bloco de código selecionado: ctrl+enter;
  • Criar chunks: ctrl+shift+i;
  • Selecionar todos os códigos escritos: ctrl+a;
  • limpar o console: ctrl+l;
  • selecões múltiplas (Para a escrita e troca de código automática) : ctrl+alt+Down;
  • selectiona uma linha: shift+Down;
  • copia e cola o código: ctrl+c e ctrl+v;
  • reformata(identa) o código selectionado: ctrl+shift+a;
  • limpa o console: ctrl+l;

Operadores matemáticos

2 + 2           #soma
## [1] 4
3 - 1           #subtração
## [1] 2
4 * 5           #multiplicação
## [1] 20
12 / 3          #divisão
## [1] 4
7 ^ 2           #exponenciação
## [1] 49
sqrt(144)       #radiciação
## [1] 12
exp(2)          #exponenciais
## [1] 7.389056
log2(8)         #logaritmos de base 2
## [1] 3
log10(100)      #logaritmos de base 10
## [1] 2
log(20)         #logaritmos neperianos
## [1] 2.995732
factorial(4)    #fatorial
## [1] 24
round(2.345)    #arredondamento sem casas decimais
## [1] 2
round(2.345, 1) #arredondamento com uma casa decimal
## [1] 2.3
round(2.345, 2) #arredondamento com duas casas decimais
## [1] 2.35
4%%2            #resto da divisão
## [1] 0

Alguns Objetos e funções matemáticas reservadas no R

pi
## [1] 3.141593
exp(1)
## [1] 2.718282
round(exp(1),2)
## [1] 2.72
# args Mostra os argumentos de uma função
args(round) 
## function (x, digits = 0) 
## NULL
args(matrix)
## function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) 
## NULL

Alguns Objetos reservados no R

letters[1:12]
##  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l"
c # Concatenar valores
## function (...)  .Primitive("c")
t # Transpor uma matriz
## function (x) 
## UseMethod("t")
## <bytecode: 0x000001d3b8ff3038>
## <environment: namespace:base>
D # Calcular derivadas
## function (expr, name) 
## .External(C_doD, expr, name)
## <bytecode: 0x000001d3b8efcb88>
## <environment: namespace:stats>
NA # Valor faltante (Not Avaiable)
## [1] NA
NaN # Indeterminado (Not a Number)
## [1] NaN
Inf # Infinito
## [1] Inf
TRUE # Variável lógica para verdadeiro, ou abreviação T
## [1] TRUE
FALSE # Variável lógica para falso, ou abreviação F
## [1] FALSE
NULL # Usado para especificar algo nulo ou vazio
## NULL

Operadores lógicos

3 == 3 #Comparação de igualdade
## [1] TRUE
5 != 0 #Comparação de diferenças
## [1] TRUE
2 > 9  #Maior do que
## [1] FALSE
1 < 8  #Menor do que
## [1] TRUE
5 >= 5 #Maior ou igual
## [1] TRUE
4 <= 1 #Menor ou igual
## [1] FALSE
2 %in% c(1,2)   #pertence a um conjunto
## [1] TRUE

Criando Vetores numéricos

vetor = 20
class(vetor)
## [1] "numeric"

Criando Vetores textuais

vetor = "Comunidade de Estatística"
class(vetor)
## [1] "character"

Criando Vetores lógicos

10 == 10
## [1] TRUE
logico = 10 == 10
class(logico)
## [1] "logical"

Criando vetores com a função concatenate - c()

novo_vetor <- c(1, 2, 5, 0, 3, 8, 20)
novo_vetor
## [1]  1  2  5  0  3  8 20
novo_texto <- c("COMUNIDADE DE ESTATÍSTICA", "R", "ESTATÍSTICA", "CIÊNCIA DE DADOS")
novo_texto
## [1] "COMUNIDADE DE ESTATÍSTICA" "R"                        
## [3] "ESTATÍSTICA"               "CIÊNCIA DE DADOS"

Criando fatores e os ordenando no R

novo_texto_fator = factor(novo_texto)
class(novo_texto_fator)
## [1] "factor"
levels(novo_texto_fator) #diz as categorias no fator
## [1] "CIÊNCIA DE DADOS"          "COMUNIDADE DE ESTATÍSTICA"
## [3] "ESTATÍSTICA"               "R"
nlevels(novo_texto_fator) #diz o número de categorias
## [1] 4
novo_texto_fator_ordenado <- ordered(novo_texto_fator, levels = c("ESTATÍSTICA", "COMUNIDADE DE ESTATÍSTICA", "R","CIÊNCIA DE DADOS"))
levels(novo_texto_fator_ordenado)
## [1] "ESTATÍSTICA"               "COMUNIDADE DE ESTATÍSTICA"
## [3] "R"                         "CIÊNCIA DE DADOS"

Criando duas ou mais classes diferentes dentro de um mesmo vetor

vetor_estranho = c(1.7, "a")  ## character
class(vetor_estranho)
## [1] "character"
vetor_estranho[1]
## [1] "1.7"
vetor_estranho2 = c(FALSE, 2)   ## numeric
class(vetor_estranho2)
## [1] "numeric"
vetor_estranho2_character = as.character(vetor_estranho2)
vetor_estranho2_character[1]
## [1] "0"

Transformando classes

#vetor_estranho_numerico <- as.numeric(vetor_estranho)
#class(x)

Usando o help

#?class
#help(class)

Criando sequências no R

sequencia1 = 1:4
sequencia2 = seq(from = 1, to = 9, by=2)

Criando vetores aleatórios no R

#sorteia 5 valores entre 1 e 1000
sample(1:1000,5) 
## [1] 782 501 520 954 920
#sorteia 5 valores do vetor sequencia 2, sem reposição
sample(sequencia2,5)
## [1] 9 1 3 7 5
#sorteia 5 valores do vetor sequencia 2, com reposição
sample(sequencia2,5,replace = T) 
## [1] 1 9 7 7 9

Criando matrizes no R

matriz_1 <- matrix(data = 1:10, nrow = 5, ncol = 2)     
#por linha
matriz_2 <- matrix(data = 1:10, nrow = 5, ncol = 2, byrow = TRUE) 

Indexação matrizes

  • x[i] : Referência linha
  • x[i, j] : Referência linha e coluna

Indexando por linha

matriz_2[1]
## [1] 1

Indexando por linha e coluna

matriz_2[1,2]
## [1] 2

Criando listas no R

primeira_lista = list(Nomes = c("Thiago", "Erick"), Idades = c(33, 38))
primeira_lista
## $Nomes
## [1] "Thiago" "Erick" 
## 
## $Idades
## [1] 33 38
class(primeira_lista)
## [1] "list"

Indexação listas

  • x[[i]] : Referência mais externa
  • x[[i]][j] : Referência mais interna
primeira_lista[[1]]
## [1] "Thiago" "Erick"
primeira_lista[[1]][1]
## [1] "Thiago"
primeira_lista[[1]][2]
## [1] "Erick"

Lista de diferentes objetos

segunda_lista = list(Nomes = c("Thiago", "Erick","Samara","Lucas"), Idades = list( ano_2022 = c(33, 38,22,27),
                                                                                      ano_2023 = c(34, 39,23,28)
                                                                                  ))
segunda_lista
## $Nomes
## [1] "Thiago" "Erick"  "Samara" "Lucas" 
## 
## $Idades
## $Idades$ano_2022
## [1] 33 38 22 27
## 
## $Idades$ano_2023
## [1] 34 39 23 28

Setando diretórios, Criando arquivos e deletando arquivos e diretórios

#vendo o caminho do diretorio que o R está apontando
#getwd()
#caminho = "C:/Users/teste/Desktop/area de trabalho/Curso R AO VIVO 24 horas/Introdução ao R"
#setando o diretório
#sewd(caminho)
#vendo se existe o diretório
dir.exists("diretorio_novo")
## [1] FALSE
#criando o diretório
dir.create("diretorio_novo")
#criando um novo arquivo
arquivo_novo="diretorio_novo/arquivo_temporario.csv"
#escrevendo o arquivo no diretório
write.csv(data.frame(x=1:5),file=arquivo_novo,row.names = F)
#Verifica os arquivos dentro do diretório
dir()
##  [1] "diretorio_novo"  "filebbc1587217b" "filebbc163767c1" "filebbc210a6040"
##  [5] "filebbc24ee1f02" "filebbc2cf77905" "filebbc35bd70a0" "filebbc3f652669"
##  [9] "filebbc4442197c" "filebbc48b17199" "filebbc4c8b4f24" "filebbc5544616e"
## [13] "filebbc55897f5"  "filebbc59c1154"  "filebbc5c12350"  "filebbc5dc73c1c"
## [17] "filebbc61606d0c" "filebbc659075d3" "filebbc6b5b58c7" "filebbc6bde3d13"
## [21] "filebbc6ddb7dd9" "filebbc76144523" "filebbc79724f02" "filebbc7e293610"
## [25] "filebbcc5e6691"  "filebbce4671e"
#deleta o diretório
unlink("diretorio_novo", recursive = TRUE) 

Criando Diretórios e arquivos temporários

#diretorio temporário
diretorio_temporariO_default=tempdir(check = TRUE)
#cria um arquivo temporário com a extensão que desejar
arquivo_temporario=tempfile(fileext = ".txt")
#o R manda uma msg
message(arquivo_temporario)
## C:\Users\teste\AppData\Local\Temp\Rtmp2fiq3S\filebbc2f375c71.txt
#remove o diretório temporário
file.remove(tempdir())
## Warning in file.remove(tempdir()): não foi possível remover o arquivo
## 'C:\Users\teste\AppData\Local\Temp\Rtmp2fiq3S', motivo 'Permission denied'
## [1] FALSE
#diretorio temporário
diretorio_temporariO_default=tempdir(check = TRUE)
#link internet preços combustíveis dados abertos ANP
link="https://www.anatel.gov.br/dadosabertos/paineis_de_dados/acompanhamento_e_controle/tac.zip"
#local file
arquivo_local=tempfile(fileext = ".zip")
#dowload file https (usando method="curl")
download.file(url=link,destfile = arquivo_local,mode="wb")
#lista files do tipo zip
#list.files(pattern=".zip$")
#listar os arquivos no zip
informacoes_arquivo=unzip(arquivo_local,list=TRUE)
#descompactar no diretório criado
unzip(zipfile=arquivo_local,exdir=diretorio_temporariO_default)
#ler o arquivo
lendo_arquivo=read.csv2(informacoes_arquivo$Name,sep=";",encoding = "UTF-8",header = T)

Tipo de Arquivos salvos

  • .R - Usado para salvar códigos criados e rotinas de análises (scripts).
  • .RData - Usado para salvar os objetos da área de trabalho (workspace).
  • .Rhistory - Usado para salvar o histórico dos comandos executados (normalmente salvo automaticamente).
  • .Rproj - Formato exclusivo do RStudio, serve para salvar todas as informações utilizadas anteriormente pelo RStudio de maneira simplificada.
  • .Rmd - Formato exclusivo quando você cria um arquivo de R markdown para criar seus relatórios personalizados e automatizados.

Exclusão de objetos

#lista os objetos no ambiente
ls() 
##  [1] "arquivo_local"                "arquivo_novo"                
##  [3] "arquivo_temporario"           "diretorio_temporariO_default"
##  [5] "informacoes_arquivo"          "lendo_arquivo"               
##  [7] "link"                         "logico"                      
##  [9] "matriz_1"                     "matriz_2"                    
## [11] "novo_texto"                   "novo_texto_fator"            
## [13] "novo_texto_fator_ordenado"    "novo_vetor"                  
## [15] "primeira_lista"               "segunda_lista"               
## [17] "sequencia1"                   "sequencia2"                  
## [19] "vetor"                        "vetor_estranho"              
## [21] "vetor_estranho2"              "vetor_estranho2_character"
#Salva a área de trabalho
save.image("minhas_area_de_trabalho.RData")
# Carregar área de trabalho
load("minhas_area_de_trabalho.RData") 
#apagando o objeto segunda_lista ou rm(A)
remove(segunda_lista) 
rm(list = ls()) #remover todos os objetos