Menu
Coddy logo textTech

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] TRUE

Para 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] FALSE

Para 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] TRUE

Observe 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.

challenge icon

Desafio

Fácil

Você receberá três linhas de entrada:

  1. Três valores separados por vírgula para inicializar uma lista (ex: 50,hello,TRUE)
  2. Um índice e um novo valor separados por uma vírgula para modificação (ex: 2,goodbye)
  3. Um índice do elemento a ser removido (ex: 3)

Realize as seguintes operações:

  1. Crie uma lista com os três valores iniciais (converta-os para os tipos apropriados: numérico, caractere, lógico)
  2. Imprima a lista original
  3. Modifique o elemento no índice especificado com o novo valor (mantenha-o como uma string de caracteres)
  4. Imprima a lista após a modificação
  5. Adicione um novo quarto elemento à lista com o valor 999
  6. Imprima a lista após adicionar o novo elemento
  7. Remova o elemento no índice especificado (da terceira entrada)
  8. Imprima a lista final

Por exemplo, se as entradas forem:

100,world,FALSE
1,updated
2

A saída deve 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] 999

Explicaçã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 se deslocam)

Lembre-se de usar colchetes duplos [[ ]] para modificações e atribuir NULL para remover elementos.

Folha de consulta

Para modificar um elemento existente em uma lista, use colchetes duplos com atribuição:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"

Para adicionar um novo elemento a uma lista, atribua a um índice que ainda não existe:

my_list <- list(10, "hello")
my_list[[3]] <- FALSE

Para remover um elemento de uma lista, atribua NULL a ele:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL

Quando um elemento é removido, os elementos restantes se deslocam para preencher a lacuna. O elemento que estava na posição 3 passa a ser a posição 2.

Experimente você mesmo

# Ler 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 entrada de modificação
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]

# Analisar í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 final
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