Indice
Indicizzazione
Gli elementi che compongono strutture di dati (come vettori, matrici, Dataframe) sono identificati da un indice che corrisponde alla loro posizione: il terzo elemento di un vettore, l'elemento che occupa la cella definita dalla seconda riga e la quarta colonna.
Il numero indice viene scritto fra parentesi quadre: [i]
o [[i]]
. Con le doppie parentesi quadre, viene estratto l'elemento singolo, con le parentesi quadre semplici, si crea un subset dell'oggetto.
Vettori
Per accedere ad un elemento di un vettore di qualsiasi tipo, si scriverà il nome del vettore e l'indice che indica la posizione dell’elemento:
- vettori.R
var.num <- c(1, 0, 9, 2, 5, 3, 10) # vettore numerico sette.nani <- c("Dotto", "Mammolo", "Pisolo", "Brontolo", "Gongolo", "Eolo", "Cucciolo") # vettore carattere
var.num[4] # quarto elemento del vettore ## [1] 9 sette.nani[4] # quarto elemento del vettore ## [1] "Brontolo"
Possiamo riferirci agli elementi di un vettore anche utilizzando operatori e funzioni:
var.num[var.num > 3] ## [1] 9 5 10 var.num[var.num == 5] ## [1] 5
Nel caso dei vettori, la differenza fra parentesi doppie o semplici è praticamente nulla, in quanto il singolo elemento di un vettore è comunque un vettore di un elemento (quindi un subset: in R non esistono i dati atomici).
Oggetti bidimensionali (matrici e dataframe)
Gli elementi che appartengono a strutture di dati bidimensionali (inclusi tabelle e matrici) sono indicizzati come [r,c]
, ovvero con l’indice della posizione per riga e quello per colonna:
- df.R
df <- data.frame("sette.nani" = sette.nani, "baci" = var.num)
df[1,] # prima riga (caso) ## sette.nani baci ## 1 Dotto 1 df[,2] # seconda colonna (variabile) ## [1] 1 0 9 2 5 3 10 df[1,2] # prima riga e seconda colonna (elemento) ## [1] 1
In questo caso, la differenza fra parentesi semplice e parentesi doppia può essere apprezzato:
df[1] # dataframe (sottoinsieme) ## sette.nani ## 1 Dotto ## 2 Mammolo ## 3 Pisolo ## 4 Brontolo ## 5 Gongolo ## 6 Eolo ## 7 Cucciolo str(df[1]) ## 'data.frame': 7 obs. of 1 variable: ## $ sette.nani: Factor w/ 7 levels "Brontolo","Cucciolo",..: 3 6 7 1 5 4 2 df[[1]] # vettore, corrisponde a df[,1] ## [1] Dotto Mammolo Pisolo Brontolo Gongolo Eolo ## [7] Cucciolo ## 7 Levels: Brontolo Cucciolo Dotto Eolo Gongolo ... Pisolo str(df[[1]]) ## Factor w/ 7 levels "Brontolo","Cucciolo",..: 3 6 7 1 5 4 2
Il dataframe è anche di una lista, quindi possiamo ricorrere all’indicizzazione delle liste. Vedi Liste; Dataframe.
Indicare più elementi di un oggetto
Per dare riferimento a più elementi di un oggetto, si ricorre a un vettore di indici:
mydata[,c(1,7,10)] mydata[c(1,7,10),]