Indicizzazione logica
Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 68 di 78.
Invece di specificare posizioni esatte, puoi usare un vettore logico per selezionare gli elementi. Questa tecnica, chiamata indicizzazione logica, ti permette di filtrare un vettore in base a condizioni anziché a posizioni.
Quando applichi un confronto a un vettore, R restituisce un vettore logico della stessa lunghezza:
numbers <- c(10, 20, 30, 40, 50)
print(numbers > 25)Output:
[1] FALSE FALSE TRUE TRUE TRUEPuoi usare questo vettore logico direttamente tra parentesi quadre per estrarre gli elementi corrispondenti:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers > 25])Output:
[1] 30 40 50R mantiene solo gli elementi per cui il vettore logico è TRUE. Questo approccio è molto più pulito rispetto a scrivere cicli per filtrare i dati. Puoi combinare le condizioni usando gli operatori logici:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers >= 20 & numbers <= 40])Output:
[1] 20 30 40L'indicizzazione logica è una delle funzionalità più potenti di R per la manipolazione dei dati e ti permette di filtrare i set di dati con espressioni semplici e leggibili.
Sfida
FacileRiceverai due righe di input:
- Un elenco di numeri separati da virgole (ad es.,
15,42,8,67,23,91,34,12,56) - Due valori soglia separati da una virgola che rappresentano un intervallo (ad es.,
20,60)
Usando l'indicizzazione logica:
- Crea un vettore numerico a partire dai numeri separati da virgole
- Estrai e stampa tutti gli elementi minori di della prima soglia (limite inferiore)
- Estrai e stampa tutti gli elementi maggiori di della seconda soglia (limite superiore)
- Estrai e stampa tutti gli elementi compresi nell'intervallo (maggiori o uguali alla prima soglia E minori o uguali alla seconda soglia)
Ad esempio, se gli input sono:
5,25,10,45,60,15,80,35,50
20,50L'output dovrebbe essere:
[1] 5 10 15
[1] 60 80
[1] 25 45 35 50Spiegazione:
- Elementi minori di 20: 5, 10, 15
- Elementi maggiori di 50: 60, 80
- Elementi compresi tra 20 e 50 (estremi inclusi): 25, 45, 35, 50
Usa l'operatore & per combinare le condizioni del filtro dell'intervallo.
Provalo tu
# Leggi l'input
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
thresholds_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Converti i numeri separati da virgole in un vettore numerico
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))
# Converti i valori di soglia
thresholds <- as.numeric(unlist(strsplit(thresholds_input, ",")))
lower_bound <- thresholds[1]
upper_bound <- thresholds[2]
# TODO: Scrivi il tuo codice qui sotto
# 1. Usa l'indicizzazione logica per estrarre gli elementi minori di lower_bound e stamparli
# 2. Usa l'indicizzazione logica per estrarre gli elementi maggiori di upper_bound e stamparli
# 3. Usa l'indicizzazione logica con l'operatore & per estrarre gli elementi nell'intervallo (estremi inclusi) e stamparliQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 2
Operatori logici (AND, OR)Operatori logici Parte 2 (NOT)Ripasso - Logica sempliceLogica vettorializzata Parte 1Logica vettorializzata Parte 27Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire input dell'utente10FizzBuzz con una variante
Panoramica del giocoLa funzione FizzBuzz13Vettori: argomenti avanzati
Slicing e indicizzazione dei vettoriIndicizzazione logicaAritmetica dei vettori e ricicloL’operatore %in%2Variabili e tipi di dati
Tipo di dato numericoTipo di dato interoTipo di dato carattereTipo di dato logicoControllo dei tipi di datoConvenzioni di denominazioneValori mancanti: NARiepilogo - Creazione di variabili8Cicli
Ciclo forCiclo whilebreaknext (continue)Riepilogo - FattorialeGenerazione di sequenze (seq, :)Cicli annidatiRiepilogo - Input dinamico3Operatori Parte 1
Operatori aritmeticiDivisione intera e moduloOperatori di assegnazioneRiepilogo - Matematica sempliceOperatori di confronto6I/O di base
Stampare l'outputcat per l'outputOutput con variabiliLeggere l'input con readline()Nozioni di base sulla conversione dei tipiRiepilogo - Calcolatore dell'etàRiepilogo - Vero o falso9Funzioni
Dichiarare una funzioneArgomenti della funzioneValori di ritornoRiepilogo - Funzione SigmaRiepilogo - Funzione di validazioneValori predefiniti dei parametriEsercitati da solo: Compilatore R online