Segmentación e Indexación de Vectores
Parte de la sección Fundamentos del Journey de R de Coddy — lección 67 de 78.
Has aprendido a acceder a elementos individuales e iterar a través de vectores. Ahora exploremos cómo extraer múltiples elementos a la vez usando slicing. Esta técnica te permite obtener un subconjunto de un vector en una sola operación.
Para extraer múltiples elementos, pasa un vector de índices dentro de los corchetes:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])Salida:
[1] 10 30 50También puedes usar el operador de dos puntos para seleccionar un rango de elementos consecutivos:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])Resultado:
[1] 20 30 40Los índices negativos son potentes en R. Excluyen elementos en lugar de seleccionarlos:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])Salida:
[1] 10 30 40 50Puedes excluir múltiples elementos pasando un vector de índices negativos:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])Resultado:
[1] 20 30 40Recuerda: no puedes mezclar índices positivos y negativos en la misma selección. R arrojará un error si intentas numbers[c(1, -2)].
Desafío
FácilRecibirás dos líneas de entrada:
- Una lista de números separados por comas (por ejemplo,
100,200,300,400,500,600,700) - Dos índices separados por una coma que representan un rango a excluir (por ejemplo,
2,5)
Realiza las siguientes operaciones:
- Crea un vector numérico a partir de los números separados por comas
- Imprime los elementos en las posiciones 1, 3 y 5 usando un vector de índices
- Imprime los elementos desde la posición 2 hasta la posición 4 usando el operador de dos puntos
- Imprime el vector con el elemento en el primer índice dado excluido (usando indexación negativa)
- Imprime el vector con los elementos desde el primer índice hasta el segundo índice excluidos (usando indexación negativa con un rango)
Por ejemplo, si las entradas son:
10,20,30,40,50,60,70
3,5La salida debería ser:
[1] 10 30 50
[1] 20 30 40
[1] 10 20 40 50 60 70
[1] 10 20 60 70Explicación:
- Los elementos en las posiciones 1, 3, 5 son: 10, 30, 50
- Los elementos desde la posición 2 a la 4 son: 20, 30, 40
- Excluir la posición 3 da: 10, 20, 40, 50, 60, 70
- Excluir las posiciones de la 3 a la 5 da: 10, 20, 60, 70
Pruébalo tú mismo
# Leer la entrada
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
indices_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Analizar los números separados por comas en un vector numérico
numbers <- as.numeric(strsplit(numbers_input, ",")[[1]])
# Analizar los dos índices
indices <- as.numeric(strsplit(indices_input, ",")[[1]])
idx1 <- indices[1]
idx2 <- indices[2]
# TODO: Escribe tu código a continuación
# 1. Imprimir los elementos en las posiciones 1, 3 y 5 usando un vector de índices
# 2. Imprimir los elementos desde la posición 2 hasta la posición 4 usando el operador de dos puntos
# 3. Imprimir el vector con el elemento en idx1 excluido (indexación negativa)
# 4. Imprimir el vector con los elementos desde idx1 hasta idx2 excluidos (indexación negativa con rango)Esta 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 usuario10FizzBuzz con un giro
Descripción general del juegoLa función FizzBuzz13Vectores Avanzados
Segmentación e Indexación de VectoresIndexación LógicaAritmética de Vectores y ReciclajeEl Operador %in%2Variables 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ámica3Operadores 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