Lab_02a_Analisando Objetos em R - Funções e Atributos

Author

Henrique Alvarenga

Published

11 de setembro de 2024

Introdução

Entender a estrutura e os atributos de objetos em R é fundamental para a análise de dados eficiente. Este capítulo explora várias funções que permitem analisar diferentes tipos de objetos, como vetores, listas, matrizes e data frames. Vamos entender como essas funções podem ser usadas para extrair informações importantes sobre nossos dados e evitar erros comuns na programação.

Tipos de Dados e Estruturas de Dados em R

Antes de explorar as funções específicas para cada tipo de objeto, é essencial compreender os tipos de dados e estruturas básicas em R. Os tipos mais comuns incluem numeric, character, factor, e logical. As estruturas de dados mais usadas são vetores, listas, matrizes e data frames.

Explorando Atributos de Objetos

Os atributos em R fornecem informações sobre as propriedades de um objeto, como suas dimensões, nomes e classe. A função attributes() pode ser usada para listar os atributos de um objeto.

Code
# Exemplo de uso da função attributes()
num_vector <- c(1, 2, 3, 4, 5)
attributes(num_vector)
NULL

Funções para Análise de Vetores

Vetores são a estrutura de dados mais básica em R. As seguintes funções ajudam a analisar vetores:

  • length(): Retorna o número de elementos em um vetor.
  • class(): Retorna a classe do vetor.
  • typeof(): Retorna o tipo de armazenamento interno do vetor.
Code
# Exemplo de funções para vetores
num_vector <- c(1, 2, 3, 4, 5)
length(num_vector)
[1] 5
Code
class(num_vector)
[1] "numeric"
Code
typeof(num_vector)
[1] "double"

Funções para Análise de Listas

Listas podem conter diferentes tipos de dados. As funções úteis incluem:

  • length(): Retorna o número de elementos na lista.
  • names(): Retorna os nomes dos elementos da lista.
  • str(): Mostra a estrutura interna da lista.
Code
# Exemplo de funções para listas
list_obj <- list(name = "Alice", age = 25, scores = c(80, 90, 85))
length(list_obj)
[1] 3
Code
names(list_obj)
[1] "name"   "age"    "scores"
Code
str(list_obj)
List of 3
 $ name  : chr "Alice"
 $ age   : num 25
 $ scores: num [1:3] 80 90 85

Funções para Análise de Matrizes

Matrizes são bidimensionais e homogêneas. Funções úteis para matrizes incluem:

  • dim(): Retorna as dimensões da matriz.
  • nrow() e ncol(): Retornam o número de linhas e colunas, respectivamente.
  • rownames() e colnames().
Code
# Exemplo de funções para matrizes
matrix_obj <- matrix(1:6, nrow = 2, ncol = 3)
dim(matrix_obj)
[1] 2 3
Code
nrow(matrix_obj)
[1] 2
Code
ncol(matrix_obj)
[1] 3
Code
rownames(matrix_obj) <- c("Row1", "Row2")
colnames(matrix_obj) <- c("Col1", "Col2", "Col3")
rownames(matrix_obj)
[1] "Row1" "Row2"
Code
colnames(matrix_obj)
[1] "Col1" "Col2" "Col3"

Funções para Análise de Data Frames

Data frames são similares a matrizes, mas podem conter diferentes tipos de dados em cada coluna:

  • dim(): Retorna as dimensões do data frame.
  • names(): Retorna ou define os nomes das colunas.
  • summary(): Fornece um resumo estatístico de cada coluna.
Code
# Exemplo de funções para data frames
df <- data.frame(
  id = 1:3,
  name = c("John", "Jane", "Doe"),
  age = c(28, 34, 45)
)
dim(df)
[1] 3 3
Code
names(df)
[1] "id"   "name" "age" 
Code
summary(df)
       id          name                age       
 Min.   :1.0   Length:3           Min.   :28.00  
 1st Qu.:1.5   Class :character   1st Qu.:31.00  
 Median :2.0   Mode  :character   Median :34.00  
 Mean   :2.0                      Mean   :35.67  
 3rd Qu.:2.5                      3rd Qu.:39.50  
 Max.   :3.0                      Max.   :45.00  

Funções de Coerção e Manipulação de Tipos

Funções de coerção transformam o tipo de dados de um objeto:

  • as.numeric(), as.character(), as.factor(), etc.
Code
# Exemplo de coerção de tipo
char_vector <- as.character(num_vector)
is.character(char_vector)
[1] TRUE

Funções Gerais para Qualquer Tipo de Objeto

Algumas funções são úteis para muitos tipos de objetos:

  • typeof(): Retorna o tipo de armazenamento interno.
  • class(): Retorna a classe do objeto.
Code
# Exemplo de funções gerais
typeof(df)
[1] "list"
Code
class(matrix_obj)
[1] "matrix" "array" 

Funções de Aplicação e Manipulação

Funções de aplicação, como apply(), lapply(), e sapply(), são muito úteis para manipular dados:

Code
# Exemplo de apply com matriz
apply(matrix_obj, 1, sum)
Row1 Row2 
   9   12 
Code
# Exemplo de lapply com lista
lapply(list_obj, class)
$name
[1] "character"

$age
[1] "numeric"

$scores
[1] "numeric"

Tratamento de Erros e Debugging

Erros comuns ao usar funções de análise de objetos frequentemente envolvem tipos de dados incompatíveis. Por exemplo, tentar usar nrow() em um vetor resultará em erro.

Code
# Exemplo de erro comum
try(nrow(num_vector))  # Deve retornar um erro
NULL

Comparação e Escolha de Funções

É importante escolher a função correta com base no tipo de objeto e na necessidade de análise. Por exemplo, summary() é excelente para data frames, mas menos útil para listas complexas.

Exercícios Práticos e Desafios de Programação

  1. Crie um vetor numérico e encontre seu comprimento, classe e tipo.
  2. Construa uma lista com elementos de diferentes tipos e use str() para explorar sua estrutura.
  3. Crie uma matriz 3x3 e atribua nomes de linha e coluna. Obtenha as somas das linhas usando apply().

Integração com Ferramentas de Visualização

Algumas funções de análise de objetos são úteis na preparação de dados para visualização com pacotes como ggplot2:

Code
# Exemplo de preparação de dados para visualização
library(ggplot2)
ggplot(df, aes(x = name, y = age)) + geom_bar(stat = "identity")

Perguntas Frequentes (FAQs)

  • Como uso attributes() para ver todas as informações de um objeto?
    Utilize attributes(objeto) para listar os atributos de um objeto específico.

Conclusão e Reflexão Final

Neste capítulo, exploramos várias funções para analisar objetos em R, desde vetores simples até data frames complexos. Compreender essas funções permite uma análise de dados mais eficiente e ajuda a evitar erros comuns.