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] 42Colchetes 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] 42Essa 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] 20Aqui, 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.
Desafio
FácilVocê receberá duas linhas de entrada:
- Três valores separados por vírgula de diferentes tipos (ex:
100,hello,TRUE) - 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:
- Crie uma lista com quatro elementos: o valor numérico, o texto, o valor lógico e o vetor de números
- Use colchetes duplos para extrair e imprimir o segundo elemento (o valor de texto)
- Use colchetes simples para extrair o terceiro elemento e imprimir o resultado (observe a diferença no formato de saída)
- Acesse o vetor armazenado no quarto elemento usando colchetes duplos, depois extraia e imprima seu terceiro valor usando a indexação de vetor
- 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,40A saída deve ser:
[1] "world"
[[1]]
[1] FALSE
[1] 24
[1] 120Explicaçã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: 24sum(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] 42Colchetes simples [ ] retornam uma sublista contendo o elemento:
my_list <- list(42, "hello", TRUE)
print(my_list[1]) # Saída: [[1]] [1] 42Acessando 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] 20Use [[ ]] 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 elementoEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores Parte 2
Operadores Lógicos (AND, OR)Operadores Lógicos Parte 2 (NOT)Recapitulação - Lógica SimplesLógica Vetorizada Parte 1Lógica Vetorizada Parte 27Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com um Toque Especial
Visão Geral do JogoA Função FizzBuzz2Variáveis e Tipos de Dados
Tipo de Dado NuméricoTipo de Dado InteiroTipo de Dado CaractereTipo de Dado LógicoVerificando Tipos de DadosConvenções de NomenclaturaValores Ausentes: NARecapitulação - Criação de Variáveis8Laços de Repetição
Laço ForLaço WhileBreakNext (Continue)Recapitulação - FatorialGeração de Sequências (seq, :)Laços AninhadosRecapitulação - Entrada Dinâmica11Vetores
Criando vetores com c()Acessando elementos de um vetorModificando vetoresOperações com vetoresRecapitulação - Vetor de preçosRecapitulação - Vetor invertidoVetores nomeados14Listas em R
Criando ListasAcessando Elementos de ListasModificando ListasListas NomeadasRecapitulação - Lista de Produtos3Operadores Parte 1
Operadores AritméticosDivisão Inteira e MóduloOperadores de AtribuiçãoRecapitulação - Matemática SimplesOperadores de Comparação6IO Básico
Saída com PrintCat para SaídaSaída com VariáveisLendo Entrada com readline()Básico de Conversão de TiposRecapitulação - Calculadora de IdadeRecapitulação - Verdadeiro ou Falso9Funções
Declarando uma FunçãoArgumentos de FunçãoValores de RetornoRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores de Parâmetro Padrão