Fonte: http://curso-r.github.io/posts/aula02.html

Os tipos básicos são atomic vector (homogêneo e unidimensional), matriz (homogêneo e bidimensional), array (homogêneo e multidimensional), lista (heterogêneo) e dataframe (heterogêneo).

 

Atomic Vectors

São as estruturas mais simples. São como arrays unidimensionais de int ou Strings em Java. Os tipos possíveis são: lógico (booleano), integer, double, complexo ou character. Exemplos:

dbl_var <- c(1, 2.5, 4.5) #DOUBLE

int_var <- c(1L, 6L, 10L) #sufixo L especifica inteiros em vez de double

log_var <- c(TRUE, FALSE, T, F) #T e F também servem

chr_var <- c("essas são", "algumas strings")

Curiosidade: c() vem de concatenate

Pra saber o tipo do objeto, usamos a função typeof(var). Outras funções: is.integer(var), is.double(var), isnumeric(var) #serve para inteiro e double, is.logical(var), is.character(var).

Coerção: quando dois objetos de tipos diferentes são inseridos em uma estrutura homogênea, o R converterá o objeto para o tipo mais flexível, na ordem: logical, integer, double, character. Ex: c(“a”,1) #o 1 vira character; c(T,1) #o T vira integer.

Factors: utilizados para armazenar dados categorizados. Contém valores pré-definidos (levels), e se baseam em um vetor de inteiros. Ex: f <- factor(c(“aventura”,”terror”,”comédia”,”drama”)). Observe que dentro do objeto os levels são organizados em ordem alfabética. Obs: factors não são convertíveis em números.

 

Matrizes e Arrays

Definidos usando as funções matrix() e array().

mat <- matrix(1:6, ncol = 3, nrow = 2)

arr <- array(1:12, c(3,2,2))  #1 a 12 são os dados pra preencher o array, e o array terá 3 linhas, 2 colunas, “2 dimensões”

Funções úteis: length() #para vetores, dim() #para dimensões do array ou matriz, nrow() e ncol() #para matriz ou array

 

Listas e Data frames

Listas: definidas através da função list(). Ex.: list(c(1:5),c(“homem”, “mulher”),c(T, F, T),list(c(1,2,3), c(“a”, “b”, “c”)))

Data frames: listas em que todos os elementos têm o mesmo comprimento. Definidos através da função data.frame(). Ex.: df <- data.frame(x = 1:4, y = c(“oi”, “oi”, “oi”, “oi”), z = T) #o T é replicado nas 4 posições; Em um data frame, os caracteres são convertidos em factors. Se não deseja a conversão, use stringAsFactors = F. A função names() exibe os nomes das colunas.

Combinando data frames:

  • rbind(df1,df2) #as linhas de df2 são adicionadas ao fim de df1, num novo objeto, pois df1 não é modificado
  • cbind(df1,df2) #as colunas de df2 são adicionadas à direita de df1, num novo objeto, sem modificar os já existentes; perceba que se um objeto é menor que outro, a reciclagem acontecerá, como explicado na aula 01

 

Subsetting

Se trata de selecionar um subconjunto de um objeto no R.

  • Subsetting com nºs inteiros positivos. Ex.: x <- c(13, 8, 5, 3, 2, 1, 1), x[c(1,2,3)] #seleciona os três primeiros elementos do vetor
  • Subsetting com nºs inteiros negativos. Ex.:x <- c(13, 8, 5, 3, 2, 1, 1), x[-c(2,5,6)] #remove os índices especificados, retornando 13, 5, 3, 1
  • Subsetting com vetores lógicos. Ex.: x <- c(13, 8, 5, 3, 2, 1, 1),   x[x==1] #retorna 1, 1

Quando o objeto tem mais de uma dimensão, utilizamos a “,” para selecionar valores dentro de cada dimensão. Ex.: m <- matrix(c(1:5, 11:15), nrow=5, ncol=2)

Também é possível alterar valores usando subsetting. Ex.: x <- c(13, 8, 5, 3, 2, 1, 1), x[x>5] <- 0

 

Funcionais

Funções que recebem funções como parâmetro. Úteis para aplicar funções a pedaços de dados que estamos trabalhando. No R, são particularmente úteis por conta da vetorização.

Ex.: lista <- as.list(1:10), f_complexa <- function(x) { return(c(x, x^2)) }, lapply(lista, f_complexa) #aplica a função f_complexa em todos os elementos da lista ou vetor

 

Leitura de dados

Para lermos um BD, usamos a função read.table(). Ex.: dados <- read.table(file = “assets/dados/arq.txt”, sep = “;”) , str(dados)

 

Estatística básica

summary(dados), mean(dados), median(dados), quantile(dados), sd(dados), table(dados$cor) #calcula tablea de frequências

 

O operador pipe %>%

Torna o código mais legível. Particularmente útil para quando há muitas funções aninhadas.

Ex.: library(magrittr), x <- c(1,2,3,4,5), x %>% sum %>% sqrt #este código envia o objeto x como argumento da função sum(), e depois o resultado dessa soma para a função sqrt() (perceba que não é necessário colocar os parênteses das funções

O pipe substitui exatamente o primeiro argumento. Se não quiser substituir o primeiro argumento, utilize um “.” para especificar qual argumento deve ser substituído. Ex.: T %>% mean(c(NA, rnorm(100)), na.rm = .) # o ponto é substituido pelo lado esquerdo

 

Outras funções: str(var) (exibe a estrutura do objeto), order(var) (retorna os índices em ordem crescente)

Anúncios