Per creare un vettore in R si può:
- definire un intervallo numerico, per esempio
1:5
rappresenta un vettore di numeri da 1 a 5
- usare c(), con questo comando è possibile creare vettori di oggetti di qualunque tipo. Per esempio,
c("Marco", "Franco", "Gino")
- usare seq(). il vantaggio è che è possibile determinare l'intervallo tra i numeri. Per esempio,
seq(1, 3, 0.1)
crea un vettore di 30 numeri 1.0, 1.1, 1.2,..., 2.9, 3.0
- usare rep(). Rep permette di ripetere tante volte i numeri o i caratteri passati come primo argomento. Per esempio,
rep(1:3, 4)
restituisce i numeri da 1 a 3 ripetuti per 4 volte: 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3
Per concatenare dei vettori è possibile usare di nuovo il comando c(). Per esempio
a <- c(1, 2, 3) b <- c(4, 5, 6) c(a, b) [1] 1, 2, 3, 4, 5, 6
Per filtrare il contenuto di un array, è possibile usare una condizione tra parentesi quadre:
c <- c(a, b) c[c < 3] [1] 1, 2, 1, 2, 1, 2, 1, 2
Per raggruppare gli elementi di un vettore, è possibile usare cut(). Questo è comodo soprattutto se si vuole rappresentare la densità di numeri reali:
cut(rnorm(1000), breaks = 20)
Questo comando suddivide i 1000 numeri casuali (basati su una distribuzione normale) in 20 blocchi calcolati automaticamente in base al valore minimo e al massimo.
Il numero è sostituito con un'etichetta che indica a quale dei 20 gruppi appartiene.
È usato spesso con table(), che restituisce un doppio vettore (un vettore di dimensione 2x20, in questo caso) con le etichette e il conteggio degli elementi.
plot(table(cut(rnorm(1000), breaks = 20)), type="s")
Per creare una matrice è possibile usare il comando matrix(), a cui vanno passati un vettore e il numero di righe e di colonne. Se gli elementi sono passati in ordine di lettura, è possibile specificare l'opzione byrow = TRUE.
matrix(c(-5:5, dnorm(-5:5)), 2, 11, byrow = TRUE)
Questo comando crea una matrice 2x11 con i numeri interi da -5 a +5 e i corrispondenti valori di una distribuzione normale standard.
Lo stesso risultato si poteva ottenere con rbind(), che prende due vettori della stessa dimensione - pena un alert - e ne fa un vettore bidimensionale.
rbind(-5:5, dnorm(-5:5))
Se avessi desiderato una matrice con due colonne e 11 righe, avrei dovuto usare
matrix(c(-5:5, dnorm(-5:5)), 11, 2)
oppure
cbind(-5:5, dnorm(-5:5))
cbind al posto di rbind