Menu
Coddy logo textTech

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 50

Tambié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 40

Los í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 50

Puedes 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 40

Recuerda: no puedes mezclar índices positivos y negativos en la misma selección. R arrojará un error si intentas numbers[c(1, -2)].

challenge icon

Desafío

Fácil

Recibirás dos líneas de entrada:

  1. Una lista de números separados por comas (por ejemplo, 100,200,300,400,500,600,700)
  2. Dos índices separados por una coma que representan un rango a excluir (por ejemplo, 2,5)

Realiza las siguientes operaciones:

  1. Crea un vector numérico a partir de los números separados por comas
  2. Imprime los elementos en las posiciones 1, 3 y 5 usando un vector de índices
  3. Imprime los elementos desde la posición 2 hasta la posición 4 usando el operador de dos puntos
  4. Imprime el vector con el elemento en el primer índice dado excluido (usando indexación negativa)
  5. 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,5

La salida debería ser:

[1] 10 30 50
[1] 20 30 40
[1] 10 20 40 50 60 70
[1] 10 20 60 70

Explicació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)
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