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

Utilize a função matrix, especifique os valores e o número de linhas e colunas.
 
				
					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

1- Para escolher um item para visualizar
2- Para vetores simples: x[item]
3- Para listas: x[[linha da lista]][item dentro linha]
4- Para matrix: x[linha,coluna]
 
				
					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)

Objetos do R podem ter nomes, que facilitam a auto-descrição
				
					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).

 

Comentários

{{ reviewsTotal }}{{ options.labels.singularReviewCountLabel }}
{{ reviewsTotal }}{{ options.labels.pluralReviewCountLabel }}
{{ options.labels.newReviewButton }}
{{ userData.canReview.message }}