Você está na página 1de 23

Listas em R

Uma Introdução

Marcelo Finger

09/04/2018
O Conceito

Listas em R

Manipulações de Listas

Plotagens

Lista de Vetores Paralelos


O Conceito
Tipos Básicos de Dados

I Numeric: 1; 1.0
I Integer: as.integer(1)
I String: “qualquer coisa entre aspas”
I Logical: TRUE; FALSE
I etc (em R: factors)
Tipos Compostos de Dados

Existem duas formas de se compor dados:

I Composição Homogênea: todos os elementos do mesmo tipo


básico
I Vetores
I Arrays, Matrizes
I Composição Heterogênea: elementos possivelmente de mais de
um tipo
I Listas (outros nomes: structs, registers, classes )
I data.frame, etc
Listas em R

I Um vetor é uma sequência de valores, possivelmente


heterogêneos
I Os valores em uma lista podem ser nomeados
I Em geral, o índice é um inteiro: 1, 2, 3, . . . , length

| $item1 | $item2 | . . . | $item_length |

I Toda lista possui um tamanho fixo


I Em R, este tamanho pode ser estendido
I Em R, osmitens emmuma lista bpodem ser acessados por um
índice [[i]]
Listas em R
Criaçao de listas
aluno1 <- list(Nome="Aarao", NUSP="1234", nota= 6.0)
aluno1

## $Nome
## [1] "Aarao"
##
## $NUSP
## [1] "1234"
##
## $nota
## [1] 6

length(aluno1) # tamanho

## [1] 3

typeof(aluno1) # tipo da lista

## [1] "list"
Acesso por nome

aluno1$Nome

## [1] "Aarao"

aluno1$NUSP

## [1] "1234"

aluno1$nota

## [1] 6
Acesso indexado a uma lista

aluno1[[1]]

## [1] "Aarao"

aluno1[[2]]

## [1] "1234"

aluno1[[3]]

## [1] 6
Acesso usando for

for(x in aluno1)
print(x)

## [1] "Aarao"
## [1] "1234"
## [1] 6
Manipulações de Listas
Copiando listas

aluno2 <- aluno1


aluno2$Nome <- "Mozart"
aluno2$NUSP <- "2345"
aluno2$nota <- 10
aluno2

## $Nome
## [1] "Mozart"
##
## $NUSP
## [1] "2345"
##
## $nota
## [1] 10
Comparando listas

I A comparação aluno1 == aluno2 gera erro!

identical(aluno1,aluno2)

## [1] FALSE
Juntando Listas
listaDePresença <- c(TRUE,TRUE,FALSE,TRUE,TRUE)
aluno1 <- append(aluno1,list(presenca=listaDePresença))
aluno1

## $Nome
## [1] "Aarao"
##
## $NUSP
## [1] "1234"
##
## $nota
## [1] 6
##
## $presenca
## [1] TRUE TRUE FALSE TRUE TRUE
Programando com Listas
I Um bom uso de listas se dá quando se deseja devolver mais de
um valor numa funçao

MinMedMax <- function(vet) {


return( list( min = min(vet),
med = mean(vet),
max = max(vet) ))
}
MinMedMax( c(5, 7, 9.9, 2.3, 8, 9, 5) )

## $min
## [1] 2.3
##
## $med
## [1] 6.6
##
## $max
## [1] 9.9
Manipulações de Geométricas

I Ver programas
Plotagens
Plotagens Simples

I Usar o pacote graphics


I Podemos obter plotagens simples com uma lista do tipo

pontos <- list( x = ... ,


y = ... )

I Para plotar, basta usar o comando:

plot(pontos)
1 x
 
Exemplo: Plotando a função 1 + x
2.718
2.716
2.714
2.712
pontos$y

2.710
2.708
2.706

500 1000 1500 2000 2500

pontos$x
Lista de Vetores Paralelos
Deficiências das Listas em R

I Podemos ter vetores como elementos de listas


I mac113$alunos = c("Aarão", "Mozart", "Zózimo")
I mac113$notas = c( 6, 10, 2.5 )
I Mas, em R, não podemos ter vetores de listas
I c(lista1, lista2) gera uma única lista !
Solução: Listas de vetores paralelos

I A lista contém vários vetores de mesmo tamanho


I Índices iguais se referem aos mesmos elementos

mac113 <- list(


alunos = c("Aarão", "Mozart", "Zózimo"),
notas = c( 6, 10, 2.5 ) )

I Estas listas são usadas para representar tabelas e planilhas

Você também pode gostar