Menu
Coddy logo textTech

Acessando Elementos de Listas

Parte da seção Fundamentos do Journey de R da Coddy — lição 72 de 78.

Listas usam uma sintaxe diferente para acessar elementos em comparação com vetores. A principal diferença está entre colchetes simples [ ] e colchetes duplos [[ ]].

Colchetes duplos extraem o elemento real da lista:

my_list <- list(42, "hello", TRUE)
print(my_list[[1]])

Saída:

[1] 42

Colchetes simples retornam uma sublista contendo o elemento, não o elemento em si:

my_list <- list(42, "hello", TRUE)
print(my_list[1])

Saída:

[[1]]
[1] 42

Essa distinção é importante quando você deseja trabalhar com o valor real. Se um elemento da lista for um vetor, os colchetes duplos permitem acessá-lo diretamente e, em seguida, usar a indexação de vetor:

my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2])

Saída:

[1] 20

Aqui, my_list[[1]] recupera o vetor, e [2] acessa seu segundo elemento. Lembre-se: use [[ ]] quando precisar do conteúdo real, e [ ] quando quiser uma lista menor.

challenge icon

Desafio

Fácil

Você receberá duas linhas de entrada:

  1. Três valores separados por vírgula de diferentes tipos (ex: 100,hello,TRUE)
  2. Uma lista de números separados por vírgula representando um vetor a ser armazenado como o quarto elemento (ex: 5,10,15,20)

Realize as seguintes operações:

  1. Crie uma lista com quatro elementos: o valor numérico, o texto, o valor lógico e o vetor de números
  2. Use colchetes duplos para extrair e imprimir o segundo elemento (o valor de texto)
  3. Use colchetes simples para extrair o terceiro elemento e imprimir o resultado (observe a diferença no formato de saída)
  4. Acesse o vetor armazenado no quarto elemento usando colchetes duplos, depois extraia e imprima seu terceiro valor usando a indexação de vetor
  5. Imprima a soma de todos os números no quarto elemento (acesse o vetor com colchetes duplos e use sum())

Por exemplo, se as entradas forem:

42,world,FALSE
8,16,24,32,40

A saída deve ser:

[1] "world"
[[1]]
[1] FALSE

[1] 24
[1] 120

Explicação:

  • my_list[[2]] extrai o valor de texto real: "world"
  • my_list[3] retorna uma sublista contendo FALSE (observe o [[1]] na saída)
  • my_list[[4]][3] acessa o vetor e, em seguida, obtém seu terceiro elemento: 24
  • sum(my_list[[4]]) calcula 8+16+24+32+40 = 120

Folha de consulta

As listas usam sintaxes de colchetes diferentes para acessar elementos:

Colchetes duplos [[ ]] extraem o elemento real:

my_list <- list(42, "hello", TRUE)
print(my_list[[1]])  # Saída: [1] 42

Colchetes simples [ ] retornam uma sublista contendo o elemento:

my_list <- list(42, "hello", TRUE)
print(my_list[1])  # Saída: [[1]] [1] 42

Acessando elementos aninhados: Use colchetes duplos para extrair um vetor de uma lista e, em seguida, use a indexação de vetores:

my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2])  # Saída: [1] 20

Use [[ ]] quando precisar do conteúdo real e [ ] quando quiser uma lista menor.

Experimente você mesmo

# Ler a entrada
con <- file("stdin", "r")
input1 <- suppressWarnings(readLines(con, n = 1))  # Primeira linha: três valores separados por vírgula
input2 <- suppressWarnings(readLines(con, n = 1))  # Segunda linha: números separados por vírgula para o vetor
close(con)

# Analisar a primeira linha de entrada em valores separados
values <- strsplit(input1, ",")[[1]]
numeric_val <- as.numeric(values[1])
text_val <- values[2]
logical_val <- as.logical(values[3])

# Analisar a segunda linha de entrada em um vetor numérico
vector_val <- as.numeric(strsplit(input2, ",")[[1]])

# TODO: Escreva seu código abaixo
# 1. Crie uma lista com quatro elementos: numeric_val, text_val, logical_val e vector_val
# 2. Use colchetes duplos [[ ]] para extrair e imprimir o segundo elemento
# 3. Use colchetes simples [ ] para extrair o terceiro elemento e imprimi-lo
# 4. Acesse o quarto elemento com colchetes duplos e, em seguida, extraia seu terceiro valor
# 5. Imprima a soma de todos os números no quarto elemento
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos