Fatiamento e Indexação de Vetores
Parte da seção Fundamentos do Journey de R da Coddy. Lição 67 de 78.
Você aprendeu a acessar elementos individuais e a iterar por vetores. Agora vamos explorar como extrair vários elementos de uma só vez usando o fatiamento. Essa técnica permite obter um subconjunto de um vetor em uma única operação.
Para extrair vários 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 50Você 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 50Você pode excluir vários elementos passando um vetor de índices negativos:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])Saída:
[1] 20 30 40Lembre-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)].
Desafio
FácilVocê receberá duas linhas de entrada:
- Uma lista de números separados por vírgulas (por exemplo,
100,200,300,400,500,600,700) - Dois índices separados por uma vírgula representando um intervalo a excluir (por exemplo,
2,5)
O código inicial já lê a entrada e cria o vetor numérico. Imprima exatamente quatro linhas, nesta ordem:
- Imprima os elementos nas posições 1, 3 e 5 usando um vetor de índices
- Imprima os elementos da posição 2 até a posição 4 usando o operador de dois-pontos
- Imprima o vetor com o elemento no primeiro índice fornecido excluído (usando indexação negativa)
- Imprima o vetor com os elementos do primeiro índice até o 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,5A saída deverá ser:
[1] 10 30 50
[1] 20 30 40
[1] 10 20 40 50 60 70
[1] 10 20 60 70Explicação:
- Os elementos nas posições 1, 3 e 5 são: 10, 30, 50
- Os elementos das posições 2 a 4 são: 20, 30, 40
- Excluindo a posição 3, obtemos: 10, 20, 40, 50, 60, 70
- Excluindo as posições 3 até 5, obtemos: 10, 20, 60, 70
Experimente você mesmo
# Ler entrada
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
indices_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Analisar 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. Imprima os elementos nas posições 1, 3 e 5 usando um vetor de índices
# 2. Imprima os elementos da posição 2 à posição 4 usando o operador dois-pontos
# 3. Imprima o vetor com o elemento em idx1 excluído (indexação negativa)
# 4. Imprima o vetor com os elementos de idx1 a idx2 excluídos (indexação negativa com intervalo)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
4Operadores - Parte 2
Operadores lógicos (AND, OR)Operadores lógicos - Parte 2 (NOT)Revisão - Lógica simplesLógica vetorizada - Parte 1Lógica vetorizada - Parte 27Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz13Vetores Avançados
Fatiamento e Indexação de VetoresIndexação LógicaAritmética e Reciclagem de VetoresO Operador %in%2Variáveis e Tipos de Dados
Tipo de Dado NuméricoTipo de Dado InteiroTipo de Dado CaractereTipo de Dado LógicoVerificando Tipos de DadosConvenções de NomenclaturaValores Ausentes: NARecapitulação - Criação de Variáveis8Laços
Laço ForLaço WhileBreakNext (Continue)Revisão - FatorialGeração de Sequências (seq, :)Laços AninhadosRevisão - Entrada Dinâmica3Operadores - Parte 1
Operadores aritméticosDivisão inteira e móduloOperadores de atribuiçãoRevisão - Matemática simplesOperadores de comparação6Entrada e saída básicas
Imprimir saídacat para saídaSaída com variáveisLendo entrada com readline()Noções básicas de conversão de tiposRecapitulação - Calculadora de idadeRecapitulação - Verdadeiro ou falso9Funções
Declarando uma FunçãoArgumentos de FunçãoValores de RetornoRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores de Parâmetros PadrãoPratique por conta própria: Compilador de R online