# 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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/r-i-tipi-di-dati/).

## 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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/vettori-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](https://www.ionos.it/hosting/spazio-web "Spazio web di IONOS") 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.

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

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.

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

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

```R
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")))
```

### 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.

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

## 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.

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

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.

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

### 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.

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

Il dataframe creato dal codice precedente si presenta così:

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

## 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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/operatori-r/) `[[]]` in cui inserire l’indice o il nome.

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

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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/imparare-a-programmare-iniziare-dalle-basi/), 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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/stringhe-r/) oppure il simbolo del dollaro seguito dal nome dell’elemento. Un esempio di codice aiuta a capire meglio il funzionamento:

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

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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/funzioni-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.

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

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:

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

### length()

Utilizzando il [comando R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/comandi-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.

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

### 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.

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

### 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.

```R
persona &lt;-list(nome = "Mario Rossi", età = 27, hobby = c("Programmazione, cinema"))
identificatore &lt;- names(persona)
```


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/liste-in-r/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/liste-in-r/) for AI/LLM consumption.