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 tramitenames(x) <- c(...) - Si accede agli elementi tramite il nome con
x['name'](conserva il nome) ox[['name']](solo il valore) setNames(x, nm)restituisce una copia con nomi senza modificare l'originaleunname(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 connames(x) <- ... x['name']restituisce un sottoinsieme con nome;x[['name']]restituisce solo il valoresetNames()è 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
- L'operatore due punti per gli intervalli interi
- seq() per sequenze personalizzate
- rep() per ripetere i valori
- Vettori e sequenze con nomi