Tutti gli elementi delle strutture dati in R sono di un certo tipo o modo. I quattro tipi piu' usati sono: logico (logical), intero (integer), double o numerico (numeric) e carattere (character).
* Logico = TRUE o FALSE (o NA)
* Intero = numeri che possono essere rappresentati senza la parte frazionale
* Numerico = qualsiasi numero che non e' complesso
* Carattere = testo
* Complesso = numeri complessi
Il modo di un elemento e' spesso determinato dal contenuto. Il valore 5.1 e' riconosciuto da R come numerico. Il testo 'ciao' e' riconosciuto come carattere.
## Esercizi base sui tipi di dati
#### 1. Calcolare le seguenti operazioni `11 * 12` e `1970 / 12`
```{r, results='hide'}
11*12
1970/12
```
#### 2. Creare le variabili `x` e `y` rispettivamente con il valore 11 e 12, calcolarne la differenza mostrandone il risultato
```{r, results='hide'}
x<-11
y<-12
y-x
x-y
```
#### 3. Calcolare la radice quadrata di 1970 e farne il log2
```{r}
log2(sqrt(1970))
```
#### 4. Creare tre variabili `var1`, `var2` e `var3` ed inizializzarle con due interi a scelta
```{r, results='hide'}
var1<-11
var2<-12
var3<-1970
```
#### 5. Sommare le prime due variabili e salvare il risultato nella variabile som
```{r, results='hide'}
som<-var1 + var2
som
```
#### 6. Per ciascuna variabile controllare la classe, il modo e il tipo
```{r}
class(var1)
mode(var1)
typeof(var1)
class(var2)
mode(var2)
typeof(var2)
class(var3)
mode(var3)
typeof(var3)
class(som)
mode(som)
typeof(som)
```
#### 7. Creare due variabili carattere `var4` e `var5` contenenti il vostro nome e cognome, controllandone la classe, il modo e il tipo.
```{r}
var4<-'elisabetta'
var5<-'ronchieri'
class(var4)
mode(var4)
typeof(var4)
class(var5)
mode(var5)
typeof(var5)
```
Cosa succede se si somma la variabile `var1` alle variabili carattere?
#### 8. Convertire le variabili `var3` e `var4` in altri tipi
```{r, results='hide'}
as.integer(var3)
as.double(var3)
as.integer(var4)
as.double(var4)
```
#### 9. Applicare la funzione `floor()` e `ceiling()` (usare l'help) alla variabile $\pi$
```{r}
floor(pi)
ceiling(pi)
```
Che tipo di dato restituiscono?
```{r}
is.integer(floor(pi))
mode(floor(pi))
is.integer(ceiling(pi))
mode(ceiling(pi))
```
#### 10. Data una stringa, convertirla in numero
```{r}
var6 <- '3.14'
as.numeric(var6)
var7 <- 'eli'
as.numeric(var7)
```
#### 11. Calcolare la divisione tra - ??? e ???
```{r}
-Inf / Inf
```
#### 12. Creare due numeri complessi `c1` e `c2`, controllarne il tipo
```{r}
c1 <- 1 + 2i
c2 <- -1 - 2i
```
Controllarne il tipo
```{r}
is.complex(c1)
is.complex(c2)
```
Effetture operazioni aritmentiche
```{r}
c1 + c2
c1 / c2
c1 + c2 + 7
```
#### 13. Svolgere operazioni aritmetiche tra valori logici
```{r}
TRUE * FALSE
T^7
```
#### 14. Creare due variabili carattere contenenti due versi di frasi celebri di personaggi famosi
```{r}
albert.einstein <- "E' piu' facile spezzare un atomo che un pregiudizio"
bertrand.russell <- "L'equilibrio tranquillizza, ma la pazzia e' molto piu' interessante"
```
Concatenare le due variabili, usando il simbolo `\n` come separatore.
```{r}
personaggi <- paste(albert.einstein, bertrand.russell, sep="\n")
cat(personaggi)
```
Trovare il termine `piu'` nei due versi
```{r}
grep("piu`", personaggi)
```
Sostituire la parola `spezzare` con la parola `rompere`
```{r}
sub('spezzare', 'rompere', albert.einstein)
```
Estrarre una parte della stringa, partendo dal 3 carattere ed aggiungendone altri 9