R: Objetos e Classes
O R possui 5 classes de objetos: vetores, matrizes e arrays, data-frames, listas e funções.
Vetor
Um vetor sempre possui elementos de uma mesma classe (a lista pode conter mais de uma classe). O tipo mais simples de objeto, com estrutura unidimensional em uma coleção ordenada de valores.
a1<- c(20, 21, 22, 23) #Vetores Numericos
a1
a2 <- c('uva', 'melancia', 'abacaxi') #Vetores Characteres
a2
a3 <- letters[1:5] #Acessando o alfabeto no R, também pode ser utilizado o LETTERS
a3
a4 <- c(1, 2, 'morango', a3) #Vetores Alfanumericos
a4
class(a4) #Visualizar a classe de um vetor
length(a4) #Verificar tamanho - quantos elementos tem dentro
a5 <- a4 == "armacao" #Vetores Lógicos
a5
Podemos testar algumas informações com a função is.”adicione aqui um terminal desejado”. Alguns exemplos usando o nosso objeto a3:
is.vector(a3)
is.matrix(a3)
is.numeric(a3)
is.character(a3)
Diferença entre numeric e integer
O R entende valores comuns como numérico, mas dependendo da necessidade, precisamos que o R entenda que são números inteiros. Para garantir que o R entenda isso, podemos colocar “L” após o número.
Integer armazena menos espaço na memória.
num <- c(1, 2, 3, 4, 5, 6, 7, 8,9,10)
x <- c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L,9L,10L)
object.size(num)
object.size(x) #Observe o tamanho que cada objeto com o mesmo número de itens armazena entre integer e numeric
Fator
Vetores podem ser numéricos ou de caracteres. Outro tipo de objeto são os fatores. Por exemplo, ao criar um vetor de indicadores de ‘tratamentos’ em um experimento, podemos definí-lo como um ‘fator’. Neste caso são registrados os ‘níveis’ (levels) do fator. Sua estrutura ainda é unidimensional.
Utilizando as funções factor() e c():
fator <- factor(c("alta","baixa","baixa","media",
"alta","media","baixa","media","media"))
fator
class(fator) #Testando a classe do objeto
Caso exista uma hierarquia, os níveis dos fatores podem ser ordenados:
fator <- factor(c("alta","baixa","baixa","media",
"alta","media","baixa","media","media"),
levels = c("alta","media","baixa"))
fator
É importante notar a diferença entre um vetor de caracteres e um vetor que seja um fator, objetos de classes diferentes. O primeiro simplesmente guarda os seus elementos enquanto o segundo possui atributos que nesta caso incluem os níveis do fator.
Matriz
Podem conter apenas um tipo de informação (números, caracteres). Estrutura bidimensional.
Criando uma matriz
matriz <- matrix(1:12, nrow = 3, ncol = 4)
matriz
class(matriz)
matriz <- matrix(1:12, nrow = 3, ncol = 4, byrow = TRUE) #Organização por linhas
matriz
A função dim() verifica a dimensão de uma matrix (quantas linhas x colunas possui).
dim(matriz)
Adicionando colunas com cbind()
cbind(matriz, rep(99, 3))
Adicionando linhas com rbind()
rbind(matriz, rep(99, 4))
Operações com matrix
matriz * 2 #É possível realizar uma operação com toda a matriz, como por exemplo uma multiplicação
Listas
Pode combinar uma coleção de objetos de diferentes classes (é um tipo especial de vetor).
Estrutura unidimensional: apenas o número de elementos é contado.
lista <- list(a = 1:100, b = c("D1", "D2", "D3", "D4"), TRUE, 1 + 2, letters[1:10])
lista
lista[[2]][3] #Observe que com os primeiros colchetes é definido qual item da lista está mostrando e o segundo par de colchetes especifica qual a posição deve ser mostrada.
Utilizando colchetes
class(lista)
length(lista)
Dataframe
Uma lista de vetores e/ou fatores, de mesmo comprimento pode conter diferentes tipos de dados (numérico, fator)
Estrutura bidimensional
Utilizando a função data.frame():
df <- data.frame(cor = 1:10,
valor = c(32, 54, 25, 48, 29))
df
class(df)
dim(df) #Verificando as dimensões
A função $ filtra/acessa uma coluna específica do data.frame
#nome$coluna
df$cor #Mostrando só a coluna cor do nosso data frame
Com a função attach() você consegue usar as colunas sem usar o $
cor #Antes do attach não é possível chamar diretamente uma coluna do objeto
attach(df)
cor #Agora é possível
Podemos acessar infos de colunas e linhas do dataframe.
Separar linhas e colunas com vírgula dentro do colchetes []: [linhas, colunas].
Quando não especificar a parte da vírgula ou da coluna, ele mostra todos.
df[1,1] # Vai pegar o primeiro item da primeira linha e primeira coluna
df[,2] # Vai pegar todas as linhas da segunda coluna
df[1,] # Vai pegar a primeira linha de todas as colunas
Estrutura dos dados
Crie uma seleção do dataframe com a coluna fator e salve em um objeto somente as observações que corresponde a baixa
str(df) #A funcao str() eh uma das que voce precisa decorar!
Converter data frame em matriz
df2 <- as.matrix(df) #"as" É usado para converter várias classes
is.matrix(df2) #"is" É para conferir se aquela variavel pertence aquela classe
is.data.frame(df2) #Após a conversão, o novo objeto não é mais data.frame
data.matrix(df2) #Função para converter especificamente data.frame em matriz
Nomes (atributo)
x <- 1:3
names(x)
names(x) <- c("Poa", "Sao Paulo", "Brasil")
x
names(x)
Associando nomes em uma matriz
rownames(matriz) <- c("A","B","C")
colnames(matriz) <- c("T1","T2","T3","T4")
matriz
Associando nomes em um data frame
names(df) #colunas
row.names(df) #linhas
Exercícios
A- Crie uma matriz com números em sequência de 1 a 25 com número igual de colunas e linhas.
B- Crie uma lista com dois componentes: (1) um vetor com as letras A, B, e C, repetidas 2, 5, e 4 vezes respectivamente; (2) a matriz do exemplo anterior.
C- Atribua nomes para estes dois componentes da lista.
D- Inclua mais um componente nesta lista, com o nome de fator, e que seja um vetor da classe fator, idêntico ao objeto caracter criado acima (que possui apenas os nomes Olaf, Sheldon, Hulk).