Menu
Coddy logo textTech

Modificar listas

Parte de la sección Fundamentos del Journey de R de Coddy — lección 73 de 78.

Ahora que ya sabes cómo crear listas y acceder a sus elementos, aprendamos cómo modificarlas. Puedes cambiar elementos existentes, añadir otros nuevos o eliminar elementos por completo.

Para cambiar un elemento existente, use corchetes dobles con asignación:

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

Resultado:

[[1]]
[1] 10

[[2]]
[1] "world"

[[3]]
[1] TRUE

Para añadir un nuevo elemento, simplemente asigna a un índice que aún no existe:

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

Salida:

[[1]]
[1] 10

[[2]]
[1] "hello"

[[3]]
[1] FALSE

Para eliminar un elemento, asigna NULL a este:

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

Salida:

[[1]]
[1] 10

[[2]]
[1] TRUE

Observa que después de eliminar el segundo elemento, los elementos restantes se desplazan para llenar el hueco. El elemento que estaba en la posición 3 ahora está en la posición 2.

challenge icon

Desafío

Fácil

Recibirás tres líneas de entrada:

  1. Tres valores separados por comas para inicializar una lista (por ejemplo, 50,hello,TRUE)
  2. Un índice y un nuevo valor separados por una coma para su modificación (por ejemplo, 2,goodbye)
  3. Un índice del elemento a eliminar (por ejemplo, 3)

Realiza las siguientes operaciones:

  1. Crea una lista con los tres valores iniciales (conviértelos a los tipos apropiados: numérico, carácter, lógico)
  2. Imprime la lista original
  3. Modifica el elemento en el índice especificado con el nuevo valor (mantenlo como una cadena de caracteres)
  4. Imprime la lista después de la modificación
  5. Añade un nuevo cuarto elemento a la lista con el valor 999
  6. Imprime la lista después de añadir el nuevo elemento
  7. Elimina el elemento en el índice especificado (de la tercera entrada)
  8. Imprime la lista final

Por ejemplo, si las entradas son:

100,world,FALSE
1,updated
2

La salida debería 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

Explicación:

  • Lista original: 100, "world", FALSE
  • Después de modificar el índice 1: "updated", "world", FALSE
  • Después de añadir el cuarto elemento: "updated", "world", FALSE, 999
  • Después de eliminar el índice 2: "updated", FALSE, 999 (los elementos restantes se desplazan)

Recuerda usar corchetes dobles [[ ]] para las modificaciones y asignar NULL para eliminar elementos.

Hoja de referencia

Para modificar un elemento existente en una lista, utiliza corchetes dobles con asignación:

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

Para añadir un nuevo elemento a una lista, asigna a un índice que aún no exista:

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

Para eliminar un elemento de una lista, asígnale NULL:

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

Cuando se elimina un elemento, los elementos restantes se desplazan para llenar el hueco. El elemento que estaba en la posición 3 pasa a ser la posición 2.

Pruébalo tú mismo

# Leer entrada
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1))  # Tres valores separados por comas
modify_input <- suppressWarnings(readLines(con, n = 1))    # Índice y nuevo valor
remove_index <- suppressWarnings(readLines(con, n = 1))    # Índice a eliminar
close(con)

# Analizar los valores iniciales
values <- strsplit(initial_values, ",")[[1]]
val1 <- as.numeric(values[1])
val2 <- values[2]
val3 <- as.logical(values[3])

# Analizar la entrada de modificación
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]

# Analizar el índice de eliminación
rem_index <- as.numeric(remove_index)

# TODO: Escribe tu código a continuación
# 1. Crear una lista con los tres valores iniciales (val1, val2, val3)
# 2. Imprimir la lista original
# 3. Modificar el elemento en mod_index con mod_value
# 4. Imprimir la lista después de la modificación
# 5. Añadir un nuevo cuarto elemento con el valor 999
# 6. Imprimir la lista después de añadir
# 7. Eliminar el elemento en rem_index (usar NULL)
# 8. Imprimir la lista final
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos