Workshop introdução a linguagem R - Prof. Thiago Marques
Aprofundando em Vetores
Estruturas importantes da base do R
- Os principais tipos de objetos no r são: numeric, character e lógico
- Os tipos de classe de objetos são muitas, mas entre elas temos: Datas, vetores, matrizes, dataframes e listas…
Vetor numérico
= c(1,2)
v1 class(v1) # tipo do objeto
## [1] "numeric"
typeof(v1) # como o R armazena os dados internamente
## [1] "double"
Vetor numérico vetor tipo Date
<- as.Date('2010-01-01')
x class(x) # Date
## [1] "Date"
typeof(x) # double
## [1] "double"
unclass(x) # 14610
## [1] 14610
Indexação dos vetores e funções importantes para se trabalhar com vetores numéricos
Criando e vetor e acessando o terceiro elemento do vetor
= c(1,2,3,4,5)
v1 3] #acessando o terceiro elemento do vetor v1[
## [1] 3
Calculando o tamanho do vetor, pegando o maior elemento e o menor elemento
length(v1) #calculando o tamanho do vetor
## [1] 5
max(v1) #pegando o maior elemento do vetor
## [1] 5
min(v1) #pegando o menor elemento do vetor
## [1] 1
Calculando a raiz quadrada do vetor e criando combinações lineares
sqrt(v1) #calculando a raiz quadrada do vetor
## [1] 1.000000 1.414214 1.732051 2.000000 2.236068
= 2*v1 #criando uma combinação linear de v1
v2 = v1+v2 #somando vetores
v3 = c(v3[1],v1[2]) #criando uma combinação de alguns elementos de cada e os concatenando
v4 = v4+v1 #somando vetores com tamannhos diferentes v5
## Warning in v4 + v1: comprimento do objeto maior não é múltiplo do comprimento
## do objeto menor
Trabalhando com vetores lógicos
= v1 %% 2 == 0 #criando um vetor lógico que contém TRUES para pares e FALSE c.contrário
teste = v1[!teste] #selecionando só os números ímpares
impar = v1[teste] #selecionando só os números pares
par = which(v1 %% 2 == 0) #segunda forma de selecionar só os números ímpares
par2 = which(v1 %% 2 != 0) #segunda forma de selecionar só os números pares
impar2 = ifelse(v1%%2==0,"Par","Ímpar") #personalizando a saída do vetor
teste_personalizado any(v1==1) #testando se algum elemento do vetor é igual a 1
## [1] TRUE
all(v1>=0) #testando se todos os elementos do vetor são maiores ou iguais a 0
## [1] TRUE
Trabalhando com índices
1:3] #selecionando do primeiro ao terceiro elemento do vetor v1[
## [1] 1 2 3
-(1:3)] #selecionando todos menos do primeiro ao terceiro elemento do vetor v1[
## [1] 4 5
-4] #selecionando todos menos o quarto elemento do vetor v1[
## [1] 1 2 3 5
c(1,2,5)] #selecionando só o primeiro, segundo e quinto elemento do vetor v1[
## [1] 1 2 5
Indexação dos vetores e funções importantes para se trabalhar com vetores textos
Trabalhando com vetores strings (Letras)
names(v1) = c("a","b","c","d","e") #nomeando os elementos do vetor
names(v1) = letters[1:5] #nomeando os elementos do vetor
%in% c(1,2)] #selecionando o elemento 1 e o elemento 2 do vetor v1[v1
## a b
## 1 2
<- c("a"=1, "b"=2, "c"=3) #nomeando os elementos do vetor de outra forma
v1_2 names(v1_2) #vendo o nome dos elementos do vetor
## [1] "a" "b" "c"
2] = 0 #modificando um elemento do vetor
v1[>3] = 0 #modificando um elemento do vetor por teste lógico
v1[v1
sort(v1) #ordenando de forma descrescente
## b d e a c
## 0 0 0 1 3
sort(v1,decreasing = F) #ordenando de forma crescente
## b d e a c
## 0 0 0 1 3
rep(v1,10) #repete os elementos de um vetor a quantidade desejada
## a b c d e a b c d e a b c d e a b c d e a b c d e a b c d e a b c d e a b c d e
## 1 0 3 0 0 1 0 3 0 0 1 0 3 0 0 1 0 3 0 0 1 0 3 0 0 1 0 3 0 0 1 0 3 0 0 1 0 3 0 0
## a b c d e a b c d e
## 1 0 3 0 0 1 0 3 0 0
Criando mensagens de output
cat("vetor inicial:", v1) #escreve na tela um texto
## vetor inicial: 1 0 3 0 0
cat("/nvetor inicial:", v1) #escreve na tela um texto e /n faz pular uma linha
## /nvetor inicial: 1 0 3 0 0
message("/nvetor inicial:", v1) #escreve na tela um texto e /n faz pular uma linha
## /nvetor inicial:10300
sprintf("meu vetor inicial contem o elemento na primeira entrada %.0f e na segunda entrada o elemento %.0f", v1[1], v1[2]) #escreve textos com padrões de formato decimal desejado
## [1] "meu vetor inicial contem o elemento na primeira entrada 1 e na segunda entrada o elemento 0"
Criando mensagens interativas (Você digita)
= readline("Qual é o seu vetor?") #pede pra escrever um texto mensagem
## Qual é o seu vetor?
class(mensagem) #verifica qual é a classe
## [1] "character"
= as.numeric(unlist(strsplit(mensagem, ","))) # strsplit separa com base em um padrão e unlist transforma lista em vetor e transforma em numérico
mensagem_tratada
class(mensagem_tratada) #verifica qual é a classe
## [1] "numeric"
Concatenando vetores e minerando padrões
= letters[1:5] #cria um vetor com cinco letras
v6 = paste(letters[1:5],1:5) #concatena vetor com números na sequência com espaço
v6_1 = paste0(letters[1:5],1:5) #concatena vetor com números na sequência sem espaço
v6_2 = paste(v6_2,collapse = ",") #colapsa o vetor com vírgulas
v6_3
= c("CBF", "cbf", "nerds", "NERDS")
v7
grep("cbf", v7) #diz qual o índice da expressão que se deseja encontrar
## [1] 2
grep("nerds", v7) #diz qual o índice da expressão que se deseja encontrar
## [1] 3
grep("cbf", v7, ignore.case = FALSE) #diz qual o índice da expressão que se deseja encontrar diferenciando maiúscula de minúscula
## [1] 2
grep("nERDS", v7, ignore.case = TRUE) #diz qual o índice da expressão que se deseja encontrar sem diferenciar maiúscula de minúscula
## [1] 3 4
grepl("cbf", v7) #traz um vetor lógico da expressão que se deseja encontrar com TRUE ou FALSE
## [1] FALSE TRUE FALSE FALSE
gsub("CBF","FLAMENGO",v7) #Substituindo um elemento do vetor baseado em padrões
## [1] "FLAMENGO" "cbf" "nerds" "NERDS"
cbind(v7,v6) #concatena vetores por colunas
## Warning in cbind(v7, v6): number of rows of result is not a multiple of vector
## length (arg 1)
## v7 v6
## [1,] "CBF" "a"
## [2,] "cbf" "b"
## [3,] "nerds" "c"
## [4,] "NERDS" "d"
## [5,] "CBF" "e"
rbind(v7,v6) #concatena vetores por linhas
## Warning in rbind(v7, v6): number of columns of result is not a multiple of
## vector length (arg 1)
## [,1] [,2] [,3] [,4] [,5]
## v7 "CBF" "cbf" "nerds" "NERDS" "CBF"
## v6 "a" "b" "c" "d" "e"