Armazenar dados em listas é algo comum nas lin­gua­gens de pro­gra­ma­ção. Em R, es­pe­ci­fi­ca­mente, listas são es­pe­ci­al­mente úteis para agrupar dados e elementos de di­fe­ren­tes tipos em uma mesma estrutura. Aprenda a criar e a manipular listas em R com o nosso tutorial R list.

Porque usar listas em R

Listas são es­tru­tu­ras de dados versáteis, além de também serem con­si­de­ra­das um tipo de dado pela linguagem de pro­gra­ma­ção R. Elas são es­pe­ci­al­mente adequadas a ambientes de pro­gra­ma­ção dinâmicos, nos quais elementos com di­fe­ren­tes tipos de dados precisam ser adi­ci­o­na­dos e removidos fle­xi­vel­mente. Ao contrário de vetores em R, itens de listas em R não fazem distinção entre os tipos de dados contidos. A ca­pa­ci­dade de armazenar di­fe­ren­tes tipos de dados é uma das prin­ci­pais vantagens ofe­re­ci­das pela função R list: com ela, de­sen­vol­ve­do­res conseguem aninhar listas da forma como querem, para que re­pre­sen­tem es­tru­tu­ras de dados complexas em códigos-fonte.

Dica

Quer publicar os programas em R que está de­sen­vol­vendo? O Webspace da IONOS oferece o espaço web ideal para armazenar todos os seus projetos. Explore os pacotes dis­po­ní­veis e escolha o seu.

Criar lista em R

Criar R list com a função list()

Para criar uma lista em R simples, faça uso da função list() seguida dos elementos a serem nela adi­ci­o­na­dos, como mostra o exemplo:

list <- list(1, TRUE, "Hello world!", c(1,2,3,4))
R

No código acima, criamos uma lista contendo quatro valores. Observe que cada valor tem um tipo de dado diferente. Mesmo assim, eles puderam ser agrupados em uma lista.

Também é possível criar uma lista de itens nomeados com a linguagem de pro­gra­ma­ção R. Dessa forma, você consegue acessar itens es­pe­cí­fi­cos de listas com fa­ci­li­dade:

person <-list(name = "Max White", age = 27, hobbies = c("Programming, movies"))
R

Você também pode usar listas como elementos de outras listas. Isso pode ser útil, por exemplo, para combinar listas di­fe­ren­tes em um único registro. Observe:

people <- list(list(name = "Max White", age = 27, hobbies = c("Programming, movies")), list(name = "Mia Black", age = 32, hobbies = c("Theater, computer games")), list(name = "Mika Brown", age =23, hobbies = c("Sports, music")))
R

Criar R list partir de vetores

Em R, você também pode criar listas con­ver­tendo vetores. A linguagem de pro­gra­ma­ção dis­po­ni­bi­liza uma função es­pe­cí­fica para essa fi­na­li­dade:

vector <- c(1,2,3,4)
list <- as.list(vector)
R

Converter listas em R em outras es­tru­tu­ras de dados

Embora uma lista em R já seja uma estrutura de dados versátil, ainda existe a chance de você ter de trans­formá-la em um outro tipo de estrutura, como em um vetore ou dataframe, para fins es­pe­cí­fi­cos. Se esse for o caso, basta que você converta a sua lista.

Converter R list em vetor

Se você deseja converter a sua lista em vetor, use a função unlist(). Ela é capaz de usar uma lista em R como parâmetro de trans­fe­rên­cia, e a convertê-la em vetor — listas passadas a essa função também podem ser mul­ti­di­men­si­o­nais. Em muitos casos, unlist() também se mostra útil para re­pre­sen­tar hi­e­rar­quias complexas de uma forma mais simples: por vetor.

list <- list(1, 2, 3, 4)
vector <- unlist(list)
R

Ao converter uma lista que contém dados de di­fe­ren­tes tipos em um vetor, você pode vir a se deparar com algum tipo de com­por­ta­mento desviante, já que, por padrão, vetores em R só conseguem armazenar dados do mesmo tipo. É por isso que re­co­men­da­mos o uso de unlist() se os elementos da sua lista forem do mesmo tipo.

O exemplo de código a seguir converte todos os valores da res­pec­tiva lista de ar­ma­ze­na­mento em um vetor R com o tipo de dado character:

list <- list(1, TRUE, "Hello world!", c(1,2,3,4))
vector <- unlist(list)
R

Converter R list em dataframe

Da­ta­fra­mes em R são usados na re­pre­sen­ta­ção tabular de conjuntos de dados, além de também terem outras funções. Por esse exato motivo, listas mul­ti­di­men­si­o­nais podem ser fa­cil­mente con­ver­ti­das em da­ta­fra­mes em R. No entanto, para que isso seja possível, elas precisam ter o mesmo número de itens. Para converter uma R list em dataframe, a linguagem de pro­gra­ma­ção R oferece a função data.frame(). Mais es­pe­ci­fi­ca­mente, ela converte listas como pa­râ­me­tros de passagem.

people <- list(name=c("Max", "Mia", "Mika"), age=c(27, 32, 23))
table <- data.frame(people)
print(table)
R

Este é o dataframe criado com pelo código acima:

name age
1  Max    27
2  Mia    32
3  Mika    23
R

Acessar itens em listas em R

Para acessar itens de listas em R, faça uso do índice ou do nome do item desejado, caso este tenha sido nomeado.

Acessar itens de R lists pelo índice

Para acessar itens de uma lista, use o operador em R [[]], inserindo o índice ou nome do item dentro dele:

list <- list(1, TRUE, "Hello world!", c(1,2,3,4))
print(list[[2]])
R

O código acima retornará TRUE ou o segundo elemento da lista. Lembre-se que, na linguagem de pro­gra­ma­ção R, o índice começa com o número 1. Fique atento a esse detalhe, tanto se você já é ex­pe­ri­ente em pro­gra­ma­ção quanto se estiver no processo de aprender a programar. O detalhe evita erros, já que índices costumam começar com zero na maioria das lin­gua­gens de pro­gra­ma­ção.

Acessar itens de R lists pelo nome do elemento

Como já men­ci­o­nado, itens de listas em R podem ser nomeados. Pos­te­ri­or­mente, você pode usar esses nomes para acessar os res­pec­ti­vos itens. Existem duas formas di­fe­ren­tes de se fazer isso: é possível usar colchetes duplos com­bi­na­dos ao nome do elemento, como em uma string em R, ou o símbolo de cifrão seguido do nome do elemento. Acompanhe um exemplo de código que esclarece melhor as ins­tru­ções:

person <-list(name = "Max White", age = 27, hobbies = c("Programming, movies"))
print(person[["name"]])
print(person$name)
R

Em ambos os casos, a instrução exibe o nome Max White na tela.

Prin­ci­pais funções de listas em R

À medida em que for tra­ba­lhando com listas, você des­co­brirá que existem diversas funções em R úteis para a re­a­li­za­ção de operações. Listamos, a seguir, as mais im­por­tan­tes.

append()

Em R, a função append() permite a adição de itens ao final de uma lista. Ela considera a lista na qual a adição será feita como o primeiro parâmetro de passagem, enquanto o elemento que será inserido é entendido como o segundo parâmetro:

list <-list(1,2,3,4)
append(list, 5)
R
Nota

Se o elemento a ser inserido tiver um nome, você pode es­pe­ci­ficá-lo na chamada da função.

A função append() não é a única capaz de adicionar itens em listas em R. Em muitos casos, a notação de índice com colchetes duplos, na qual se usa um índice que ainda não existe, é uma opção mais rápida. Veja:

list <-list(1,2,3,4)
list[[5]] <-5
R

length()

Ao chamar o comando em R length(), você con­se­guirá descobrir quantos itens existem na res­pec­tiva lista. Essa função toma listas como pa­râ­me­tros de trans­fe­rên­cia.

list <- list(1,2,3,4)
print(length(list))
R

Con­ca­te­na­ção com c()

A linguagem de pro­gra­ma­ção R permite combinar duas listas em uma só. Para fazer isso, faça uso da função c(), que toma as duas listas como parâmetro e retorna uma lista con­ca­te­nada:

list1 <- list(1,2,3,4)
list2 <- list(5,6,7,8)
list_concatenate <- c(list1, list2)
R

names()

Se você criou uma R list nomeada, pode usar a função names() para exibir os nomes dos objetos presentes na lista. A função toma a lista como um parâmetro de trans­fe­rên­cia:

person <-list(name = "Max White", age = 27, hobbies = c("Programming, movies"))
identifier <- names(person)
R
Ir para o menu principal