00
:
00
:
00
:
00
Corso SEO AI - Usa SEOEMAIL al checkout per il 30% di sconto

Vettori in R

I vettori sono la struttura dati fondamentale in R. Ogni singolo valore in R è in realtà un vettore di lunghezza uno. Comprendere i vettori è essenziale per lavorare efficacemente con questo linguaggio, poiché la maggior parte delle operazioni in R è progettata per funzionare in modo vettoriale.

Creare Vettori con c()

La funzione c() (che sta per “combine” o “concatenate”) è il modo principale per creare vettori in R:

# Vettore numerico
numeri <- c(10, 20, 30, 40, 50)
print(numeri)
# [1] 10 20 30 40 50

# Vettore di stringhe
frutti <- c("mela", "banana", "arancia", "kiwi")
print(frutti)
# [1] "mela"    "banana"  "arancia" "kiwi"

# Vettore logico
condizioni <- c(TRUE, FALSE, TRUE, TRUE, FALSE)
print(condizioni)
# [1]  TRUE FALSE  TRUE  TRUE FALSE

Un vettore in R può contenere solo elementi dello stesso tipo. Se si mescolano tipi diversi, R eseguirà una conversione automatica (coercion):

misto <- c(1, "due", TRUE)
print(misto)
# [1] "1"    "due"  "TRUE"
# Tutto viene convertito in stringhe

Sequenze con seq() e Operatore :

Per creare sequenze di numeri, R offre l’operatore : e la funzione seq():

# Operatore : per sequenze semplici
sequenza <- 1:10
print(sequenza)
# [1]  1  2  3  4  5  6  7  8  9 10

# Sequenza decrescente
decrescente <- 10:1
print(decrescente)
# [1] 10  9  8  7  6  5  4  3  2  1

# seq() per sequenze personalizzate
passo <- seq(from = 0, to = 1, by = 0.2)
print(passo)
# [1] 0.0 0.2 0.4 0.6 0.8 1.0

# seq() con lunghezza specificata
equidistanti <- seq(from = 1, to = 100, length.out = 5)
print(equidistanti)
# [1]   1.00  25.75  50.50  75.25 100.00

Ripetizioni con rep()

La funzione rep() crea vettori con elementi ripetuti:

# Ripetere un valore
cinque_zeri <- rep(0, times = 5)
print(cinque_zeri)
# [1] 0 0 0 0 0

# Ripetere un vettore
ripetuto <- rep(c(1, 2, 3), times = 3)
print(ripetuto)
# [1] 1 2 3 1 2 3 1 2 3

# Ripetere ogni elemento
ciascuno <- rep(c(1, 2, 3), each = 3)
print(ciascuno)
# [1] 1 1 1 2 2 2 3 3 3

Accesso per Indice

In R, gli indici partono da 1 (non da 0 come in molti altri linguaggi):

voti <- c(28, 30, 25, 27, 30, 24)

# Accesso a un singolo elemento
print(voti[1])
# [1] 28

print(voti[4])
# [1] 27

# Slicing: selezionare un intervallo
print(voti[2:5])
# [1] 30 25 27 30

# Selezionare elementi specifici
print(voti[c(1, 3, 6)])
# [1] 28 25 24

# Escludere elementi con indici negativi
print(voti[-1])
# [1] 30 25 27 30 24

print(voti[c(-2, -4)])
# [1] 28 25 30 24

Vettori Logici per il Filtraggio

Una delle funzionalità più potenti di R è l’uso di vettori logici per filtrare i dati:

temperature <- c(18, 22, 35, 15, 28, 40, 12)

# Creare un vettore logico
calde <- temperature > 25
print(calde)
# [1] FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE

# Usare il vettore logico per filtrare
print(temperature[calde])
# [1] 35 28 40

# Filtraggio diretto in un'unica espressione
print(temperature[temperature >= 20 & temperature <= 30])
# [1] 22 28

# which() restituisce gli indici degli elementi TRUE
print(which(temperature > 25))
# [1] 3 5 6

Operazioni Vettoriali

R esegue le operazioni elemento per elemento sui vettori, senza bisogno di cicli espliciti:

a <- c(1, 2, 3, 4, 5)
b <- c(10, 20, 30, 40, 50)

# Operazioni aritmetiche elemento per elemento
print(a + b)
# [1] 11 22 33 44 55

print(a * b)
# [1]  10  40  90 160 250

print(b / a)
# [1] 10 10 10 10 10

# Operazione con uno scalare
print(a * 3)
# [1]  3  6  9 12 15

# Funzioni matematiche vettoriali
print(sqrt(a))
# [1] 1.000000 1.414214 1.732051 2.000000 2.236068

# Funzioni statistiche
prezzi <- c(12.5, 8.3, 15.7, 9.1, 22.0)
print(sum(prezzi))
# [1] 67.6

print(mean(prezzi))
# [1] 13.52

print(min(prezzi))
# [1] 8.3

print(max(prezzi))
# [1] 22

Funzioni Utili per i Vettori

R offre numerose funzioni integrate per manipolare i vettori:

dati <- c(42, 17, 8, 35, 23, 51, 3)

# Lunghezza del vettore
print(length(dati))
# [1] 7

# Ordinamento crescente
print(sort(dati))
# [1]  3  8 17 23 35 42 51

# Ordinamento decrescente
print(sort(dati, decreasing = TRUE))
# [1] 51 42 35 23 17  8  3

# Invertire l'ordine
print(rev(dati))
# [1]  3 51 23 35  8 17 42

Vettori con Nomi

È possibile assegnare nomi agli elementi di un vettore per accedervi in modo più leggibile:

# Creare un vettore con nomi
voti_esami <- c(matematica = 28, fisica = 30, chimica = 25, informatica = 30)
print(voti_esami)
# matematica     fisica    chimica informatica
#         28         30         25          30

# Accesso per nome
print(voti_esami["fisica"])
# fisica
#     30

# Assegnare nomi dopo la creazione con names()
temperature <- c(22, 25, 18, 30)
names(temperature) <- c("Lunedi", "Martedi", "Mercoledi", "Giovedi")
print(temperature)
#   Lunedi  Martedi Mercoledi  Giovedi
#       22       25        18       30

# Leggere i nomi
print(names(temperature))
# [1] "Lunedi"    "Martedi"   "Mercoledi" "Giovedi"

Conclusione

I vettori sono il cuore di R e la base su cui si costruiscono tutte le altre strutture dati. La capacità di creare vettori con c(), seq() e rep(), combinarli con operazioni vettoriali ed effettuare filtraggi con vettori logici rende R estremamente efficiente per l’analisi dei dati. Padroneggiare i vettori significa avere le fondamenta solide per lavorare con data frame, matrici e tutte le funzionalità avanzate di R.