Menu
CoddyTech

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 vettorizzate, 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 determinata condizione:

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

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

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

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

# Può partecipare se: l'età è >= 18 O (ha meno di 18 anni E ha il permesso)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

Ricorda: usa un singolo &, | e ! quando lavori con i vettori, e un doppio &&, || 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 gli 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 l'opposto 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 E che 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 NON >= 60

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

# 3. Crea 'at_risk' - NON attended O compiti NON consegnati

# 4. Crea 'passing_but_absent' - punteggio >= 60 E NON attended

# 5. Crea 'needs_support' - (punteggio < 50) O (NON attended E 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