0Pricing
R Academy · Lezione

Vettori e sequenze con nomi

Assegni e acceda ai nomi dei vettori per ottenere codice più leggibile.

Vettori e sequenze con nomi è una lezione R Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento R Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso R Academy include 4 lezioni in totale.

Introduzione ai vettori con nomi

Un vettore con nomi è un vettore in cui ogni elemento ha un nome associato (un'etichetta di carattere). I nomi rendono il codice più leggibile e consentono di accedere agli elementi tramite il nome anziché tramite l'indice di posizione.

# A plain vector vs a named vector
plain <- c(78, 92, 85, 67)
named <- c(Alice = 78, Bob = 92, Carol = 85, Dave = 67)

cat('Plain vector:', plain, '
')
cat('Named vector:
')
print(named)

Creare vettori con nomi con c()

Il modo più semplice per creare un vettore con nomi consiste nell'usare coppie name = value all'interno di c(). I nomi possono essere stringhe valide qualsiasi; se contengono spazi o caratteri speciali, racchiudeteli tra backtick o virgolette.

# GDP in trillions USD
gdp <- c(USA = 27.4, China = 18.0, Germany = 4.1,
         Japan = 4.2, UK = 3.1)
cat('GDP values:
')
print(gdp)
cat('Names:', names(gdp), '
')
cat('Values:', unname(gdp), '
')

La funzione names()

names(x) recupera i nomi di un vettore sotto forma di vettore di caratteri. È anche possibile assegnare i nomi dopo la creazione usando names(x) <- c(...), modificando il vettore direttamente.

# Assign names after creation
temps <- c(22.1, 18.5, 25.3, 20.0)
cat('Before naming:', temps, '
')

names(temps) <- c('Mon', 'Tue', 'Wed', 'Thu')
cat('After naming:
')
print(temps)

# Retrieve names
cat('Days:', names(temps), '
')

Accedere agli elementi tramite il nome

Accedete agli elementi di un vettore con nomi usando x["name"] o x[["name"]]. Le parentesi singole [] restituiscono un sottoinsieme che conserva il nome; [[]] restituisce solo il valore, senza il nome.

scores <- c(Math = 88, Science = 92, English = 75, History = 81)

# Single bracket: keeps name
cat('Math score (with name):
')
print(scores['Math'])

# Double bracket: just the value
cat('Science score (value only):', scores[['Science']], '
')

# Multiple names
cat('STEM subjects:
')
print(scores[c('Math', 'Science')])

setNames() per lo stile funzionale

setNames(x, nm) restituisce una copia di x con i nomi impostati su nm, senza modificare l'originale. È utile nelle pipeline, quando desiderate assegnare un nome a un vettore come parte di una catena di operazioni.

# setNames returns a named copy (does not modify original)
raw_values <- c(0.85, 0.72, 0.91, 0.68)
metrics <- setNames(raw_values, c('Precision', 'Recall', 'F1', 'Accuracy'))

cat('Original (unchanged):', raw_values, '
')
cat('Named metrics:
')
print(metrics)

# Best metric
best_name <- names(which.max(metrics))
cat('Best metric:', best_name, '=', metrics[best_name], '
')

Modificare i nomi

È possibile modificare singoli nomi indicizzando names(x). È utile quando dovete rinominare un sottoinsieme di elementi senza ricreare l'intero vettore.

prices <- c(apple = 1.20, bannana = 0.80, cherry = 3.50)  # typo!

# Fix a single name
names(prices)[2] <- 'banana'
cat('Fixed names:
')
print(prices)

# Rename all
names(prices) <- c('Apple', 'Banana', 'Cherry')  # capitalise
cat('Capitalised:
')
print(prices)

Sequenze con nomi con seq() e names()

È possibile creare una sequenza con nomi combinando seq() con setNames(). È particolarmente utile per gli indici mensili o settimanali, nei quali i nomi aggiungono contesto ai valori numerici.

# Monthly average temperature with names
temps_monthly <- setNames(
  c(3.1, 4.2, 8.5, 13.0, 17.2, 21.0, 23.5, 23.0, 19.0, 13.5, 7.8, 4.0),
  month.abb
)
cat('Monthly temps:
')
print(temps_monthly)
cat('Summer avg:', mean(temps_monthly[c('Jun', 'Jul', 'Aug')]), '
')

Filtrare vettori con nomi

I vettori con nomi supportano sia l'indicizzazione logica sia quella basata sui caratteri. Potete selezionare gli elementi tramite il nome e filtrarli contemporaneamente in base al valore, rendendo i vettori con nomi molto espressivi per piccole tabelle di ricerca.

population <- c(Tokyo = 37.4, Delhi = 32.9, Shanghai = 28.5,
                Dhaka = 22.5, Cairo = 21.3, Mumbai = 20.7)

# Select cities with population > 25 million
big_cities <- population[population > 25]
cat('Cities over 25M:
')
print(big_cities)

# Sort descending by population
cat('Ranked:
')
print(sort(population, decreasing = TRUE))

Rimuovere i nomi con unname()

unname(x) rimuove tutti i nomi da un vettore, restituendo solo i valori. È utile quando si passano dati a funzioni che non prevedono vettori con nomi o quando i nomi rendono l'output visivamente disordinato.

named_vec <- c(x1 = 10, x2 = 20, x3 = 30, x4 = 40)
cat('Named:
')
print(named_vec)

unnamed_vec <- unname(named_vec)
cat('Unnamed:
')
print(unnamed_vec)

# Check
cat('Has names after unname:', !is.null(names(unnamed_vec)), '
')

Vettori con nomi come tabelle di ricerca

Uno degli usi più potenti dei vettori con nomi è quello di tabelle di ricerca: associare chiavi a valori. Invece di usare una catena di istruzioni if-else, potete usare un vettore con nomi e indicizzarlo.

# Map month abbreviation to number of days
days_in_month <- c(Jan=31, Feb=28, Mar=31, Apr=30, May=31,
                   Jun=30, Jul=31, Aug=31, Sep=30, Oct=31,
                   Nov=30, Dec=31)

# Look up specific months
query <- c('Mar', 'Jul', 'Nov')
cat('Days in', query[1], ':', days_in_month[query[1]], '
')
cat('Days in', query[2], ':', days_in_month[query[2]], '
')
cat('Days in', query[3], ':', days_in_month[query[3]], '
')

Vettori con nomi: concetti fondamentali

Riepilogo delle caratteristiche dei vettori con nomi in R:

  • Si creano con c(name = value, ...) oppure assegnando i nomi tramite names(x) <- c(...)
  • Si accede agli elementi tramite il nome con x['name'] (conserva il nome) o x[['name']] (solo il valore)
  • setNames(x, nm) restituisce una copia con nomi senza modificare l'originale
  • unname(x) rimuove tutti i nomi
  • I vettori con nomi funzionano come eleganti tabelle di ricerca (in sostituzione delle catene di if-else)
# Complete workflow
rates <- c(USD = 1.0, EUR = 0.92, GBP = 0.79, JPY = 149.5)

# Convert 100 USD to each currency
amount_usd <- 100
converted <- amount_usd * rates
cat('100 USD in other currencies:
')
print(round(converted, 2))

Verifica rapida

Qual è la differenza tra x['key'] e x[['key']] quando x è un vettore con nomi?

Riepilogo: vettori con nomi

Ottimo lavoro! Ecco i concetti principali di questa lezione:

  • I vettori con nomi associano ogni elemento a un'etichetta di carattere
  • Si creano con la sintassi c(name = val) oppure assegnando i nomi con names(x) <- ...
  • x['name'] restituisce un sottoinsieme con nome; x[['name']] restituisce solo il valore
  • setNames() è il modo funzionale (senza modificare l'originale) per assegnare nomi
  • Usate i vettori con nomi come tabelle di ricerca per sostituire le verbose catene di if-else
  • unname() rimuove i nomi quando servono i valori grezzi
# Named vector as grade lookup
grade_map <- c('90'='A', '80'='B', '70'='C', '60'='D')
student_score <- 80

# Find grade bracket
brackets <- c(90, 80, 70, 60)
threshold <- max(brackets[brackets <= student_score])
cat('Score:', student_score, '-> Grade:', grade_map[as.character(threshold)], '
')

Domande Frequenti

La lezione «Vettori e sequenze con nomi» è gratuita?

Sì — il testo completo di «Vettori e sequenze con nomi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso R Academy, passa a CoddyKit PRO. Il corso R Academy include 4 lezioni in totale.

Cosa imparerò in «Vettori e sequenze con nomi»?

Assegni e acceda ai nomi dei vettori per ottenere codice più leggibile. Eserciti R Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare R Academy?

Non è richiesta alcuna esperienza precedente. R Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Vettori e sequenze con nomi»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione R Academy?

Sì. Ogni lezione R Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. L'operatore due punti per gli intervalli interi
  2. seq() per sequenze personalizzate
  3. rep() per ripetere i valori
  4. Vettori e sequenze con nomi
← Torna a R Academy