La struttura dati di una lista è presente in molti linguaggi di pro­gram­ma­zio­ne diversi. Le liste risultano pratiche so­prat­tut­to per riunire dati di tipi diversi in R.

Per cosa si uti­liz­za­no le liste in R?

Le liste sono una struttura dati versatile in R e co­sti­tui­sco­no anche un tipo di dati vero e proprio. Sono par­ti­co­lar­men­te indicate in ambienti di pro­gram­ma­zio­ne dinamici, ossia dove è ne­ces­sa­rio ag­giun­ge­re e rimuovere elementi dei tipi di dati più svariati in modo fles­si­bi­le. A dif­fe­ren­za dei vettori in R, nel caso degli elementi nelle liste non è im­por­tan­te il tipo di dati di cui si tratta: la pos­si­bi­li­tà di avere più tipi di dati diversi all’interno di una lista è uno dei vantaggi chiave delle liste in R. Poiché è possibile annidare a piacere le liste in R l’una dentro l’altra, il loro utilizzo permette di rap­pre­sen­ta­re strutture complesse nel codice sorgente.

Consiglio

Se desideri mettere online i tuoi programmi in R, lo spazio web di IONOS può esserti utile. La soluzione ti offre almeno 50 GB di memoria per i tuoi progetti.

Come creare le liste in R

Funzione list()

Per creare una semplice lista in R puoi uti­liz­za­re la funzione omonima list(), nella quale indicare gli elementi da ag­giun­ge­re alla tua lista.

lista <- list(1, TRUE, "Ciao a tutti!", c(1,2,3,4))
R

Questo esempio di codice crea una lista di quattro valori. Come puoi notare, questi valori non hanno lo stesso identico tipo di dati, ma puoi comunque riunirli all’interno di una lista.

Inoltre, R ti offre la pos­si­bi­li­tà di creare una lista con elementi a cui è stato assegnato un nome. In questo modo puoi accedere fa­cil­men­te a de­ter­mi­na­ti elementi della tua lista in R.

persona <-list(nome = "Mario Rossi", età = 27, hobby = c("Programmazione, cinema"))
R

Puoi anche inserire altre liste come elementi, riunendo così diverse liste in un unico record di dati:

persone <- list(list(nome = "Mario Rossi", età = 27, hobby = c("Programmazione, cinema")), list(nome = "Anna Bianchi", età = 32, hobby = c("Teatro, giochi per computer")), list(nome = "Andrea Verdi", età =23, hobby = c("Sport, musica")))
R

Come creare liste con i vettori

È anche possibile creare liste partendo da vettori in R con­ver­ten­do­li in una lista. R dispone di una funzione anche per questa ope­ra­zio­ne.

vettore &lt;- c(1,2,3,4)
lista &lt;- as.list(vettore)
R

Con­ver­sio­ne di liste in altre strutture dati

Anche se le liste in R sono versatili, potresti avere bisogno di altre strutture dati per certi scopi ap­pli­ca­ti­vi, come i vettori o i dataframe. In questo caso, puoi con­ver­ti­re fa­cil­men­te la tua lista.

Da lista in R a vettore: come creare vettori partendo dalle liste

Se desideri con­ver­ti­re una lista in un vettore in R, utilizza la funzione unlist(). Questa prende una lista in R come parametro di passaggio e la converte in un vettore. La lista che indichi nella funzione può essere anche mul­ti­di­men­sio­na­le. Spesso l’uso di unlist() è utile per rap­pre­sen­ta­re gerarchie complesse in una semplice forma vet­to­ria­le.

lista &lt;- list(1, 2, 3, 4)
vettore &lt;- unlist(lista)
R

Se converti in vettore una lista con­te­nen­te diversi tipi di dati, possono ve­ri­fi­car­si com­por­ta­men­ti in­de­si­de­ra­ti o in­de­fi­ni­ti, poiché i vettori in R possono contenere per im­po­sta­zio­ne pre­de­fi­ni­ta soltanto dati dello stesso tipo. L’uso di unlist() è quindi con­si­glia­bi­le soltanto se gli elementi della tua lista sono omogenei.

Nel seguente esempio di codice tutti i valori della lista vengono con­ver­ti­ti nel tipo di dati character per me­mo­riz­zar­li nel vettore in R.

lista &lt;- list(1, TRUE, "Ciao a tutti!", c(1,2,3,4))
vettore &lt;- unlist(lista)
R

Da lista in R a Dataframe: come con­ver­ti­re le liste in dataframe

I dataframe in R sono uti­liz­za­ti per molti scopi, tra cui la rap­pre­sen­ta­zio­ne di dati sotto forma di tabelle. Le liste mul­ti­di­men­sio­na­li, in par­ti­co­la­re, possono essere con­ver­ti­te ade­gua­ta­men­te in dataframe in R. A tal fine, devono avere lo stesso numero di elementi. Per con­ver­ti­re una lista in R in un dataframe, il lin­guag­gio R offre la funzione data.frame() che come parametro di passaggio prevede di indicare la lista da con­ver­ti­re.

persone &lt;- list(nome=c("Mario", "Anna", "Andrea"), età=c(27, 32, 23))
tabella &lt;- data.frame(persone)
print(tabella)
R

Il dataframe creato dal codice pre­ce­den­te si presenta così:

nome età
1  Mario    27
2  Anna    32
3  Andrea    23
R

Accesso agli elementi nelle liste in R

Per accedere agli elementi delle liste puoi uti­liz­za­re l’indice oppure il nome dell’elemento de­si­de­ra­to, se di­spo­ni­bi­le.

Accesso tramite indice

Per accedere agli elementi della lista puoi usare l’operatore R [[]] in cui inserire l’indice o il nome.

lista &lt;- list(1, TRUE, "Ciao a tutti!", c(1,2,3,4))
print(lista[[2]])
R

Questo codice re­sti­tui­sce TRUE, ossia il secondo elemento della lista. Ricorda che l’in­di­ciz­za­zio­ne in R parte da 1. Se hai già espe­rien­za di pro­gram­ma­zio­ne e non hai appena iniziato a studiare la pro­gram­ma­zio­ne, in questa si­tua­zio­ne possono ve­ri­fi­car­si fa­cil­men­te degli errori, poiché nella maggior parte degli altri linguaggi di pro­gram­ma­zio­ne l’in­di­ciz­za­zio­ne parte da zero.

Accesso tramite nomi degli elementi

Come già accennato, è possibile assegnare un nome agli elementi delle liste in R. Questi nomi possono essere uti­liz­za­ti per accedere agli elementi, se ne­ces­sa­rio. L’accesso agli elementi tramite nome è possibile in due modi diversi: puoi usare le doppie parentesi quadre in com­bi­na­zio­ne con il nome dell’elemento per creare una stringa in R oppure il simbolo del dollaro seguito dal nome dell’elemento. Un esempio di codice aiuta a capire meglio il fun­zio­na­men­to:

persona &lt;-list(nome = "Mario Rossi", età = 27, hobby = c("Programmazione, cinema"))
print(persona[["nome"]])
print(persona$nome)
R

In entrambi i casi l’istru­zio­ne print "Mario Rossi" compare come output sullo schermo.

Le prin­ci­pa­li funzioni per le liste in R

Se lavori con le liste, puoi sfruttare varie utili funzioni di R per aiutarti a eseguire de­ter­mi­na­te ope­ra­zio­ni.

append()

La funzione append() permette di ag­giun­ge­re elementi alla fine di una lista. La funzione prevede di indicare come primo parametro di passaggio la lista alla quale ag­giun­ge­re l’elemento e come secondo parametro l’elemento da ag­giun­ge­re.

lista &lt;-list(1,2,3,4)
append(lista, 5)
R
N.B.

Se l’elemento da ag­giun­ge­re ha un nome, puoi indicarlo sem­pli­ce­men­te nel richiamo della funzione.

La funzione append() per le liste in R non è l’unica pos­si­bi­li­tà per ag­giun­ge­re elementi a una lista. Spesso la variante più veloce è la notazione dell’indice con doppie parentesi quadre in cui si utilizza un indice non ancora esistente:

lista &lt;-list(1,2,3,4)
lista[[5]] &lt;-5
R

length()

Uti­liz­zan­do il comando R length() è possibile de­ter­mi­na­re il numero di elementi presenti in una lista. La funzione prevede di indicare come parametro di passaggio la lista di cui desidera conoscere la lunghezza.

lista &lt;- list(1,2,3,4)
print(length(lista))
R

Con­ca­te­na­zio­ne con c()

In R è possibile unire due liste. Per farlo, utilizza la funzione c(), che accetta come parametri le liste da unire e re­sti­tui­sce una nuova lista con­ca­te­na­ta.

lista1 &lt;- list(1,2,3,4)
lista2 &lt;- list(5,6,7,8)
lista_concatenata &lt;- c(lista1, lista2)
R

names()

Se hai creato una lista in R con­te­nen­te dei nomi, puoi uti­liz­za­re la funzione names() per vi­sua­liz­za­re i nomi degli oggetti nella lista. La funzione prevede di indicare la lista come parametro di passaggio.

persona &lt;-list(nome = "Mario Rossi", età = 27, hobby = c("Programmazione, cinema"))
identificatore &lt;- names(persona)
R
Vai al menu prin­ci­pa­le