Liste in R: come creare le tue liste in R

La struttura dati di una lista è presente in molti linguaggi di programmazione diversi. Le liste risultano pratiche soprattutto per riunire dati di tipi diversi in R.

Per cosa si utilizzano le liste in R?

Le liste sono una struttura dati versatile in R e costituiscono anche un tipo di dati vero e proprio. Sono particolarmente indicate in ambienti di programmazione dinamici, ossia dove è necessario aggiungere e rimuovere elementi dei tipi di dati più svariati in modo flessibile. A differenza dei vettori in R, nel caso degli elementi nelle liste non è importante il tipo di dati di cui si tratta: la possibilità 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 rappresentare 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 utilizzare la funzione omonima list(), nella quale indicare gli elementi da aggiungere 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 possibilità di creare una lista con elementi a cui è stato assegnato un nome. In questo modo puoi accedere facilmente a determinati 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 convertendoli in una lista. R dispone di una funzione anche per questa operazione.

vettore <- c(1,2,3,4)
lista <- as.list(vettore)
R

Conversione di liste in altre strutture dati

Anche se le liste in R sono versatili, potresti avere bisogno di altre strutture dati per certi scopi applicativi, come i vettori o i dataframe. In questo caso, puoi convertire facilmente la tua lista.

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

Se desideri convertire 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 multidimensionale. Spesso l’uso di unlist() è utile per rappresentare gerarchie complesse in una semplice forma vettoriale.

lista <- list(1, 2, 3, 4)
vettore <- unlist(lista)
R

Se converti in vettore una lista contenente diversi tipi di dati, possono verificarsi comportamenti indesiderati o indefiniti, poiché i vettori in R possono contenere per impostazione predefinita soltanto dati dello stesso tipo. L’uso di unlist() è quindi consigliabile soltanto se gli elementi della tua lista sono omogenei.

Nel seguente esempio di codice tutti i valori della lista vengono convertiti nel tipo di dati character per memorizzarli nel vettore in R.

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

Da lista in R a Dataframe: come convertire le liste in dataframe

I dataframe in R sono utilizzati per molti scopi, tra cui la rappresentazione di dati sotto forma di tabelle. Le liste multidimensionali, in particolare, possono essere convertite adeguatamente in dataframe in R. A tal fine, devono avere lo stesso numero di elementi. Per convertire una lista in R in un dataframe, il linguaggio R offre la funzione data.frame() che come parametro di passaggio prevede di indicare la lista da convertire.

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

Il dataframe creato dal codice precedente 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 utilizzare l’indice oppure il nome dell’elemento desiderato, se disponibile.

Accesso tramite indice

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

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

Questo codice restituisce TRUE, ossia il secondo elemento della lista. Ricorda che l’indicizzazione in R parte da 1. Se hai già esperienza di programmazione e non hai appena iniziato a studiare la programmazione, in questa situazione possono verificarsi facilmente degli errori, poiché nella maggior parte degli altri linguaggi di programmazione l’indicizzazione 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 utilizzati per accedere agli elementi, se necessario. L’accesso agli elementi tramite nome è possibile in due modi diversi: puoi usare le doppie parentesi quadre in combinazione 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 funzionamento:

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

In entrambi i casi l’istruzione print "Mario Rossi" compare come output sullo schermo.

Le principali funzioni per le liste in R

Se lavori con le liste, puoi sfruttare varie utili funzioni di R per aiutarti a eseguire determinate operazioni.

append()

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

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

Se l’elemento da aggiungere ha un nome, puoi indicarlo semplicemente nel richiamo della funzione.

La funzione append() per le liste in R non è l’unica possibilità per aggiungere 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 <-list(1,2,3,4)
lista[[5]] <-5
R

length()

Utilizzando il comando R length() è possibile determinare 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 <- list(1,2,3,4)
print(length(lista))
R

Concatenazione con c()

In R è possibile unire due liste. Per farlo, utilizza la funzione c(), che accetta come parametri le liste da unire e restituisce una nuova lista concatenata.

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

names()

Se hai creato una lista in R contenente dei nomi, puoi utilizzare la funzione names() per visualizzare i nomi degli oggetti nella lista. La funzione prevede di indicare la lista come parametro di passaggio.

persona <-list(nome = "Mario Rossi", età = 27, hobby = c("Programmazione, cinema"))
identificatore <- names(persona)
R
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.