# I tipi di dati in R da conoscere

Come in ogni altro linguaggio di programmazione, anche nella [programmazione in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/linguaggio-di-programmazione-r/) sono presenti diversi tipi di dati grazie ai quali i programmatori e le programmatrici possono strutturare meglio il loro codice. Oltre ai tipi di dati di base, in R esistono anche tipi di dati più complessi.

## A cosa servono i tipi di dati in R?

Spesso, quando si programma, è necessario elaborare i dati. Per poter memorizzare questi dati in modo sensato, gli sviluppatori e le sviluppatrici possono scegliere fra diversi tipi di dati nella maggior parte dei linguaggi di programmazione. Alcuni esempi di tipi di dati sono i numeri e le catene di caratteri.

Di norma, per tipi di dati diversi sono definiti degli [operatori R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/operatori-r/) differenti. Pertanto, i tipi di dati aiutano i programmatori e le programmatrici anche a **elaborare i dati in forma adeguata** e quindi ad aumentare l’efficienza dei programmi.

## I diversi tipi di dati in R

In R esistono vari tipi di dati. Alcuni di questi dovrebbero esserti **già noti da altri linguaggi di programmazione**, a meno che tu non abbia appena iniziato a [imparare a programmare](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/imparare-a-programmare-iniziare-dalle-basi/). Per eseguire un controllo del tipo di dati in R, puoi utilizzare il [comando R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/comandi-r/) *class()*, che accetta una variabile a piacere come parametro di passaggio e restituisce il tipo di dati di tale variabile come risultato.

### Tipi di dati numerici

I tipi di dati numerici fanno parte dei **tipi di dati di base in R** e servono a rappresentare valori numerici. Si distinguono fra *numeric* per i numeri reali, *integer* per i numeri interi e *complex* per i numeri complessi con parte immaginaria.

```R
x <- 3.14
y <- 42
z <- 3 + 2i
print(class(x))
print(class(y))
print(class(z))
```

Il risultato di questo codice si presenta così:

```none
"numeric"
"numeric"
"complex"
```

A questo punto potresti chiederti come mai il tipo di dati *numeric* sia riportato due volte, nonostante la variabile *y* sia un integer o numero intero. La spiegazione è semplice: **gli interi in R sono sempre anche *numeric***. Per comunicare all’interprete che si tratta effettivamente di un intero, devi aggiungere il suffisso*L* ai numeri interi che utilizzi:

```R
y <- 42L
print(class (y))
```

A questo punto, richiamando la funzione come sopra indicato si ottiene il risultato previsto:

```none
"integer"
```

### Catene di caratteri

Per rappresentare un testo o un carattere puoi ricorrere al tipo di dati *character*. I dati di questo tipo, detti [stringhe in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/stringhe-r/), possono essere contrassegnati in R con **virgolette semplici o doppie**:

```R
x <- "Ciao mondo!"
y <- 'Hello world!'
print(class(x))
print(class(y))
```

Anche in questo caso puoi usare la funzione `class()` per visualizzare il tipo di dati delle variabili utilizzate:

```none
"character"
"character"
```

### Tipi di dati logici

Le variabili con tipo di dati logico, che in R vanno sotto la denominazione *logical*, sono valutate dall’interprete come `TRUE` o `FALSE`. In questo modo è possibile formalizzare **condizioni o espressioni logiche**. Spesso è necessario farlo per gestire il flusso di controllo del programma.

```R
x <- TRUE
y <- FALSE
print(class(x))
print(class(y))
```

Osservando il tipo di dati delle due variabili noterai che è stato loro assegnato il tipo di dati *logical*:

```none
"logical"
"logical"
```

### Dati grezzi

Il linguaggio di programmazione R dispone di un apposito tipo di dati per **mostrare le variabili come sequenza di byte**. Questo tipo di dati in R si chiama *raw*. Per convertire i tuoi dati in dati grezzi, utilizza la funzione `charToRaw()`. Per il processo inverso è disponibile la funzione `rawToChar()`.

Il codice seguente mostra come convertire una stringa in una sequenza di byte con il tipo di dati *raw*:

```R
x <- "Ciao mondo!"
y <- charToRaw(x)
print(y)
print(class(y))
```

Il codice precedente dà come risultato innanzitutto la sequenza di byte sotto forma di numeri esadecimali. A seguire, la chiamata della funzione `class()` permette di visualizzare il tipo di dati della variabile *y*:

```none
43 69 61 6f 20 6d 6f 6e 64 6f 21
"raw"
```

N.B. In R è anche possibile convertire i dati in un altro tipo di dati. Spesso questa modifica è particolarmente facile in R: nel caso di una stringa composta da un numero (ad esempio “42”) è possibile convertirla nel tipo di dati *numeric* per mezzo di una semplice addizione con 0.

## Strutture dati in R

Oltre ai tipi di dati di base, in R sono disponibili varie strutture dati diverse, grazie alle quali i programmatori e le programmatrici possono strutturare meglio i loro dati. Queste **strutture dati, come i data frame R, sono più complesse dei semplici tipi di dati** e sono spesso multidimensionali.

Consiglio Ti piacerebbe imparare a programmare in R? Allora pubblica sul web il tuo nuovo progetto in R con uno [spazio web comprensivo di hosting](https://www.ionos.it/hosting/spazio-web "Spazio web di IONOS") adattabile alle tue esigenze.


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