Menu
Coddy logo textTech

Acceso a elementos de la lista

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

Las listas utilizan una sintaxis diferente para acceder a los elementos en comparación con los vectores. La diferencia clave está entre los corchetes simples [ ] y los corchetes dobles [[ ]].

Los corchetes dobles extraen el elemento real de la lista:

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

Resultado:

[1] 42

Los corchetes simples devuelven una sublista que contiene el elemento, no el elemento en sí:

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

Salida:

[[1]]
[1] 42

Esta distinción es importante cuando quieres trabajar con el valor real. Si un elemento de la lista es un vector, los corchetes dobles te permiten acceder a él directamente y luego usar la indexación de vectores:

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

Salida:

[1] 20

Aquí, my_list[[1]] recupera el vector, y [2] accede a su segundo elemento. Recuerda: usa [[ ]] cuando necesites el contenido real, y [ ] cuando quieras una lista más pequeña.

challenge icon

Desafío

Fácil

Recibirás dos líneas de entrada:

  1. Tres valores separados por comas de diferentes tipos (por ejemplo, 100,hello,TRUE)
  2. Una lista de números separados por comas que representa un vector que se almacenará como el cuarto elemento (por ejemplo, 5,10,15,20)

Realiza las siguientes operaciones:

  1. Crea una lista con cuatro elementos: el valor numérico, el texto, el valor lógico y el vector de números
  2. Usa corchetes dobles para extraer e imprimir el segundo elemento (el valor de texto)
  3. Usa corchetes simples para extraer el tercer elemento e imprimir el resultado (observa la diferencia en el formato de salida)
  4. Accede al vector almacenado en el cuarto elemento usando corchetes dobles, luego extrae e imprime su tercer valor usando la indexación de vectores
  5. Imprime la suma de todos los números en el cuarto elemento (accede al vector con corchetes dobles y usa sum())

Por ejemplo, si las entradas son:

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

La salida debería ser:

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

[1] 24
[1] 120

Explicación:

  • my_list[[2]] extrae el valor de texto real: "world"
  • my_list[3] devuelve una sublista que contiene FALSE (nota el [[1]] en la salida)
  • my_list[[4]][3] accede al vector, luego obtiene su tercer elemento: 24
  • sum(my_list[[4]]) calcula 8+16+24+32+40 = 120

Hoja de referencia

Las listas utilizan una sintaxis de corchetes diferente para acceder a los elementos:

Los corchetes dobles [[ ]] extraen el elemento real:

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

Los corchetes simples [ ] devuelven una sublista que contiene el elemento:

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

Acceso a elementos anidados: Utilice corchetes dobles para extraer un vector de una lista y, a continuación, utilice la indexación de vectores:

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

Utilice [[ ]] cuando necesite el contenido real, y [ ] cuando desee una lista más pequeña.

Pruébalo tú mismo

# Leer entrada
con <- file("stdin", "r")
input1 <- suppressWarnings(readLines(con, n = 1))  # Primera línea: tres valores separados por comas
input2 <- suppressWarnings(readLines(con, n = 1))  # Segunda línea: números separados por comas para el vector
close(con)

# Analizar la primera línea de entrada en valores separados
values <- strsplit(input1, ",")[[1]]
numeric_val <- as.numeric(values[1])
text_val <- values[2]
logical_val <- as.logical(values[3])

# Analizar la segunda línea de entrada en un vector numérico
vector_val <- as.numeric(strsplit(input2, ",")[[1]])

# TODO: Escribe tu código a continuación
# 1. Crea una lista con cuatro elementos: numeric_val, text_val, logical_val y vector_val
# 2. Usa corchetes dobles [[ ]] para extraer e imprimir el segundo elemento
# 3. Usa corchetes simples [ ] para extraer el tercer elemento e imprimirlo
# 4. Accede al cuarto elemento con corchetes dobles, luego extrae su tercer valor
# 5. Imprime la suma de todos los números en el cuarto elemento
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