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] 42Los 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] 42Esta 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] 20Aquí, 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.
Desafío
FácilRecibirás dos líneas de entrada:
- Tres valores separados por comas de diferentes tipos (por ejemplo,
100,hello,TRUE) - 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:
- Crea una lista con cuatro elementos: el valor numérico, el texto, el valor lógico y el vector de números
- Usa corchetes dobles para extraer e imprimir el segundo elemento (el valor de texto)
- Usa corchetes simples para extraer el tercer elemento e imprimir el resultado (observa la diferencia en el formato de salida)
- Accede al vector almacenado en el cuarto elemento usando corchetes dobles, luego extrae e imprime su tercer valor usando la indexación de vectores
- 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,40La salida debería ser:
[1] "world"
[[1]]
[1] FALSE
[1] 24
[1] 120Explicació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: 24sum(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] 42Los corchetes simples [ ] devuelven una sublista que contiene el elemento:
my_list <- list(42, "hello", TRUE)
print(my_list[1]) # Salida: [[1]] [1] 42Acceso 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] 20Utilice [[ ]] 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 elementoEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 2
Operadores lógicos (AND, OR)Operadores lógicos Parte 2 (NOT)Resumen - Lógica simpleLógica vectorizada Parte 1Lógica vectorizada Parte 27Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada del usuario2Variables y tipos de datos
Tipo de dato numéricoTipo de dato enteroTipo de dato de caracteresTipo de dato lógicoComprobación de tipos de datosConvenciones de nomenclaturaValores faltantes: NAResumen - Creación de variables8Bucles
Bucle ForBucle WhileBreakNext (Continue)Repaso - FactorialGeneración de secuencias (seq, :)Bucles anidadosRepaso - Entrada dinámica11Vectores
Crear vectores con c()Acceder a elementos de un vectorModificar vectoresOperaciones con vectoresResumen - Vector de preciosResumen - Vector invertidoVectores con nombre14Listas en R
Crear listasAcceso a elementos de la listaModificar listasListas con nombreRepaso - Lista de productos3Operadores Parte 1
Operadores aritméticosDivisión entera y móduloOperadores de asignaciónRepaso - Matemáticas simplesOperadores de comparación6E/S básica
Imprimir salidaCat para salidaSalida con variablesLectura de entrada con readline()Conceptos básicos de conversión de tiposResumen - Calculadora de edadResumen - Verdadero o falso9Funciones
Declarar una funciónArgumentos de una funciónValores de retornoRepaso - Función SigmaRepaso - Función de validaciónValores de parámetros por defecto