Menu
Coddy logo textTech

Fatiamento e Indexação de Vetores

Parte da seção Fundamentos do Journey de R da Coddy — lição 67 de 78.

Você aprendeu como acessar elementos individuais e iterar através de vetores. Agora vamos explorar como extrair múltiplos elementos de uma só vez usando slicing. Esta técnica permite que você obtenha um subconjunto de um vetor em uma única operação.

Para extrair múltiplos elementos, passe um vetor de índices dentro dos colchetes:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])

Saída:

[1] 10 30 50

Você também pode usar o operador de dois pontos para selecionar um intervalo de elementos consecutivos:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])

Saída:

[1] 20 30 40

Índices negativos são poderosos em R. Eles excluem elementos em vez de selecioná-los:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])

Saída:

[1] 10 30 40 50

Você pode excluir múltiplos elementos passando um vetor de índices negativos:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])

Saída:

[1] 20 30 40

Lembre-se: você não pode misturar índices positivos e negativos na mesma seleção. O R lançará um erro se você tentar numbers[c(1, -2)].

challenge icon

Desafio

Fácil

Você receberá duas linhas de entrada:

  1. Uma lista de números separados por vírgula (ex: 100,200,300,400,500,600,700)
  2. Dois índices separados por uma vírgula representando um intervalo a ser excluído (ex: 2,5)

Realize as seguintes operações:

  1. Crie um vetor numérico a partir dos números separados por vírgula
  2. Imprima os elementos nas posições 1, 3 e 5 usando um vetor de índices
  3. Imprima os elementos da posição 2 à posição 4 usando o operador de dois pontos (colon operator)
  4. Imprima o vetor com o elemento no primeiro índice fornecido excluído (usando indexação negativa)
  5. Imprima o vetor com os elementos do primeiro índice ao segundo índice excluídos (usando indexação negativa com um intervalo)

Por exemplo, se as entradas forem:

10,20,30,40,50,60,70
3,5

A saída deve ser:

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

Explicação:

  • Elementos nas posições 1, 3, 5 são: 10, 30, 50
  • Elementos da posição 2 à 4 são: 20, 30, 40
  • Excluir a posição 3 resulta em: 10, 20, 40, 50, 60, 70
  • Excluir as posições de 3 a 5 resulta em: 10, 20, 60, 70

Folha de consulta

Para extrair múltiplos elementos de um vetor, passe um vetor de índices dentro de colchetes:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])  # [1] 10 30 50

Use o operador de dois pontos para selecionar um intervalo de elementos consecutivos:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])  # [1] 20 30 40

Índices negativos excluem elementos em vez de selecioná-los:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])  # [1] 10 30 40 50

Exclua múltiplos elementos passando um vetor de índices negativos:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])  # [1] 20 30 40

Importante: Você não pode misturar índices positivos e negativos na mesma seleção.

Experimente você mesmo

# Ler a entrada
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
indices_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# Converter os números separados por vírgula em um vetor numérico
numbers <- as.numeric(strsplit(numbers_input, ",")[[1]])

# Analisar os dois índices
indices <- as.numeric(strsplit(indices_input, ",")[[1]])
idx1 <- indices[1]
idx2 <- indices[2]

# TODO: Escreva seu código abaixo
# 1. Imprimir elementos nas posições 1, 3 e 5 usando um vetor de índices

# 2. Imprimir elementos da posição 2 até a posição 4 usando o operador de dois pontos

# 3. Imprimir o vetor com o elemento no idx1 excluído (indexação negativa)

# 4. Imprimir o vetor com elementos de idx1 a idx2 excluídos (indexação negativa com intervalo)
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos