Menu
Coddy logo textTech

Indexação Lógica

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

Em vez de especificar posições exatas, você pode usar um vetor lógico para selecionar elementos. Essa técnica, chamada de indexação lógica, permite filtrar um vetor com base em condições em vez de posições.

Quando você aplica uma comparação a um vetor, o R retorna um vetor lógico do mesmo comprimento:

numbers <- c(10, 20, 30, 40, 50)
print(numbers > 25)

Saída:

[1] FALSE FALSE  TRUE  TRUE  TRUE

Você pode usar este vetor lógico diretamente dentro de colchetes para extrair elementos correspondentes:

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

Saída:

[1] 30 40 50

O R mantém apenas os elementos onde o vetor lógico é TRUE. Esta abordagem é muito mais limpa do que escrever loops para filtrar dados. Você pode combinar condições usando operadores lógicos:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers >= 20 & numbers <= 40])

Saída:

[1] 20 30 40

A indexação lógica é um dos recursos mais poderosos do R para manipulação de dados, permitindo que você filtre conjuntos de dados com expressões simples e legíveis.

challenge icon

Desafio

Fácil

Você receberá duas linhas de entrada:

  1. Uma lista de números separados por vírgula (ex: 15,42,8,67,23,91,34,12,56)
  2. Dois valores de limite separados por uma vírgula representando um intervalo (ex: 20,60)

Usando indexação lógica:

  1. Crie um vetor numérico a partir dos números separados por vírgula
  2. Extraia e imprima todos os elementos que são menores que o primeiro limite (limite inferior)
  3. Extraia e imprima todos os elementos que são maiores que o segundo limite (limite superior)
  4. Extraia e imprima todos os elementos que estão dentro do intervalo (maiores ou iguais ao primeiro limite E menores ou iguais ao segundo limite)

Por exemplo, se as entradas forem:

5,25,10,45,60,15,80,35,50
20,50

A saída deve ser:

[1]  5 10 15
[1] 60 80
[1] 25 45 35 50

Explicação:

  • Elementos menores que 20: 5, 10, 15
  • Elementos maiores que 50: 60, 80
  • Elementos entre 20 e 50 (inclusive): 25, 45, 35, 50

Use o operador & para combinar condições para o filtro de intervalo.

Folha de consulta

A indexação lógica permite filtrar um vetor com base em condições em vez de posições. Quando você aplica uma comparação a um vetor, o R retorna um vetor lógico:

numbers <- c(10, 20, 30, 40, 50)
print(numbers > 25)
# Saída: [1] FALSE FALSE  TRUE  TRUE  TRUE

Use o vetor lógico dentro de colchetes para extrair os elementos correspondentes:

numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers > 25])
# Saída: [1] 30 40 50

Combine condições usando operadores lógicos como & (AND):

numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers >= 20 & numbers <= 40])
# Saída: [1] 20 30 40

Experimente você mesmo

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

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

# Converter os valores de limite
thresholds <- as.numeric(unlist(strsplit(thresholds_input, ",")))
lower_bound <- thresholds[1]
upper_bound <- thresholds[2]

# TODO: Escreva seu código abaixo
# 1. Use indexação lógica para extrair elementos menores que lower_bound e imprima
# 2. Use indexação lógica para extrair elementos maiores que upper_bound e imprima
# 3. Use indexação lógica com o operador & para extrair elementos dentro do intervalo (inclusive) e imprima
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