Menu
Coddy logo textTech

Logica vettorializzata Parte 2

Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 21 di 78.

Proprio come AND e OR hanno versioni vettorializzate, anche l’operatore NOT agisce elemento per elemento sui vettori. Quando applichi ! a un vettore di valori logici, inverte ogni elemento individualmente.

passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed  # FALSE TRUE FALSE TRUE

Ogni TRUE diventa FALSE e ogni FALSE diventa TRUE. Questo è particolarmente utile quando vuoi trovare gli elementi che non soddisfano una certa condizione:

temperatures <- c(18, 25, 30, 15, 22)

# Trova le temperature che NON superano 20
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

Puoi combinare il NOT vettorializzato con & e | per creare filtri complessi:

ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)

# Può partecipare se: età >= 18 O (età inferiore a 18 E ha il permesso)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

Ricorda: usa &, | e ! singoli quando lavori con i vettori, e &&, || doppi quando confronti singoli valori.

challenge icon

Sfida

Facile

Usa l'operatore NOT vettorializzato (!) insieme a & e | per creare condizioni logiche complesse elemento per elemento.

Ti vengono forniti i seguenti vettori:

scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)

Usa operatori logici vettorializzati, incluso l'operatore NOT, per creare i seguenti vettori logici:

  1. Crea un vettore chiamato failed che memorizzi TRUE per ogni punteggio che NON è maggiore o uguale a 60
  2. Crea un vettore chiamato absent che memorizzi il contrario di attended (inverti ogni valore)
  3. Crea un vettore chiamato at_risk che memorizzi TRUE per ogni studente che NON ha frequentato O NON ha consegnato i compiti
  4. Crea un vettore chiamato passing_but_absent che memorizzi TRUE per ogni studente con un punteggio maggiore o uguale a 60 che E NON ha frequentato
  5. Crea un vettore chiamato needs_support che memorizzi TRUE per ogni studente per cui: (il punteggio è inferiore a 50) O (NON ha frequentato E NON ha consegnato i compiti)

Usa la funzione print() per visualizzare failed, absent, at_risk, passing_but_absent e needs_support, esattamente in quest'ordine.

Provalo tu

# Vettori forniti
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)

# TODO: Scrivi il tuo codice qui sotto
# 1. Crea 'failed' - TRUE per i punteggi che NON sono >= 60

# 2. Crea 'absent' - il contrario di attended

# 3. Crea 'at_risk' - NOT attended OR compiti non consegnati

# 4. Crea 'passing_but_absent' - punteggio >= 60 AND NOT attended

# 5. Crea 'needs_support' - (punteggio < 50) OR (NOT attended AND compiti non consegnati)

# Stampa i risultati
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore R online