Modificando Listas
Parte da seção Fundamentos do Journey de R da Coddy. Lição 73 de 78.
Agora que você sabe como criar listas e acessar seus elementos, vamos aprender como modificá-las. Você pode alterar elementos existentes, adicionar novos ou remover elementos inteiramente.
Para alterar um elemento existente, use colchetes duplos com atribuição:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"
print(my_list)Saída:
[[1]]
[1] 10
[[2]]
[1] "world"
[[3]]
[1] TRUEPara adicionar um novo elemento, basta atribuir a um índice que ainda não existe:
my_list <- list(10, "hello")
my_list[[3]] <- FALSE
print(my_list)Saída:
[[1]]
[1] 10
[[2]]
[1] "hello"
[[3]]
[1] FALSEPara remover um elemento, atribua NULL a ele:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL
print(my_list)Saída:
[[1]]
[1] 10
[[2]]
[1] TRUEObserve que após remover o segundo elemento, os elementos restantes se deslocam para preencher a lacuna. O elemento que estava na posição 3 agora está na posição 2.
Desafio
FácilVocê receberá três linhas de entrada:
- Três valores separados por vírgulas para inicializar uma lista (por exemplo,
50,hello,TRUE) - Um índice e um novo valor separados por uma vírgula para modificação (por exemplo,
2,goodbye) - Um índice do elemento a ser removido (por exemplo,
3)
Execute as seguintes operações:
- Crie uma lista com os três valores iniciais (converta-os para os tipos apropriados: numérico, caractere, lógico)
- Imprima a lista original
- Modifique o elemento no índice especificado com o novo valor (mantenha-o como uma string de caracteres)
- Imprima a lista após a modificação
- Adicione um novo quarto elemento à lista com o valor
999 - Imprima a lista após adicionar o novo elemento
- Remova o elemento no índice especificado (da terceira entrada)
- Imprima a lista final
Por exemplo, se as entradas forem:
100,world,FALSE
1,updated
2A saída deverá ser:
[[1]]
[1] 100
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[1]]
[1] "updated"
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[1]]
[1] "updated"
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[4]]
[1] 999
[[1]]
[1] "updated"
[[2]]
[1] FALSE
[[3]]
[1] 999Explicação:
- Lista original: 100, "world", FALSE
- Após modificar o índice 1: "updated", "world", FALSE
- Após adicionar o quarto elemento: "updated", "world", FALSE, 999
- Após remover o índice 2: "updated", FALSE, 999 (os elementos restantes mudam de posição)
Lembre-se de usar colchetes duplos [[ ]] para modificações e atribuir NULL para remover elementos.
Experimente você mesmo
# Ler a entrada
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1)) # Três valores separados por vírgula
modify_input <- suppressWarnings(readLines(con, n = 1)) # Índice e novo valor
remove_index <- suppressWarnings(readLines(con, n = 1)) # Índice para remover
close(con)
# Analisar os valores iniciais
values <- strsplit(initial_values, ",")[[1]]
val1 <- as.numeric(values[1])
val2 <- values[2]
val3 <- as.logical(values[3])
# Analisar a entrada de modificação
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]
# Analisar o índice de remoção
rem_index <- as.numeric(remove_index)
# TODO: Escreva seu código abaixo
# 1. Crie uma lista com os três valores iniciais (val1, val2, val3)
# 2. Imprima a lista original
# 3. Modifique o elemento em mod_index com mod_value
# 4. Imprima a lista após a modificação
# 5. Adicione um novo quarto elemento com o valor 999
# 6. Imprima a lista após a adição
# 7. Remova o elemento em rem_index (use NULL)
# 8. Imprima a lista finalEsta 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)Revisão - Lógica simplesLógica vetorizada - Parte 1Lógica vetorizada - Parte 27Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com uma Reviravolta
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
Laço ForLaço WhileBreakNext (Continue)Revisão - FatorialGeração de Sequências (seq, :)Laços AninhadosRevisão - Entrada Dinâmica11Vetores
Criando vetores com c()Acessando elementos de vetoresModificando vetoresOperações com vetoresRevisão - Vetor de preçosRevisã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çãoRevisão - Matemática simplesOperadores de comparação6Entrada e saída básicas
Imprimir saídacat para saídaSaída com variáveisLendo entrada com readline()Noções básicas 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âmetros PadrãoPratique por conta própria: Compilador de R online