R è un software per la gestione, l'analisi dei dati e la produzione di grafici. Queste note, e quelle che seguiranno, costituiscono un canovaccio per lo svolgimento delle lezioni. Possono essere usate come veloce riferimento al programma del corso, ma vanno accompagnate da un testo un po' più organico, come ad esempio le dispense di Vito Muggeo e Giancarlo Ferrara: Il liguaggio R: concetti introduttivi ed esempi (II edizione).
R può essere utilizzato come una calcolatrice. Basta scrivere una espressione aritmetica, e lui la calcola immediatamente, rispettando le precedenze tra gli operatori. È possibile utilizzare varie funzioni aritmetiche come sqrt
(radice quadrata), log, log2, log10
(logaritmo naturale, in base 2, in base 10), exp
(elevamento a potenza del numero di Nepero), etc...
> 3*5+4 [1] 19 > 3*sqrt(4) [1] 6
Notare che il risultato compare con un [1]
davanti. Per ora ignoratelo, ci torneremo su nella lezione sui vettori.
L'aritmetica è estesa anche con tre valori speciali +Inf
(+∞), -Inf
(-∞), NaN
. I primi due sono generati da operazioni che normalmente non sono definite, ma che in R sono estese per continuità. Inoltre, valori normali e infiniti si possono sommare con le solite regole che valgono per i limiti di funzioni.
> 14/0 [1] Inf > log(0) [1] -Inf > log(0)+1000 [1] -Inf
Il valore NaN
, abbreviazione di "Not A Number", è invece generato quando si effettuano delle operazioni non definite e non estendibili per continuità (come la divisione per zero) o quando si fanno operazioni su valori infiniti che corrispondono alle forme indeterminate nel calcolo dei limiti.
> 0/0 [1] NaN > Inf - Inf [1] NaN > 45+NaN [1] NaN
Notare che il valore NaN
è assorbente: tutte le operazioni in cui uno degli operandi è NaN
generano sempre NaN
.
R supporta anche i numeri complessi, denotati con a+bi dove i è l'unità immaginaria.
> sqrt(-1) [1] NaN Warning message: NaNs produced in: sqrt(-1) > sqrt(-1+0i) [1] 0+1i
R supporta anche il tipo di dato booleano. I due valori vero e falso si indicano con TRUE
e FALSE
. Gli operatori di confronto (== != <= < > >=
) restituiscono un booleano, così pure come gli operatori logici &&
, ||
, etc... I valori TRUE
e FALSE
si possono abbreviare in T
ed F
.
> 3>=2 && TRUE [1] TRUE
Le stringhe in R sono sequenze di caratteri racchiusi tra virgolette o apici.
> "pippo" [1] "pippo"
Il valore di una espressione può essere assegnato alle variabili con l'operatore di assegnamento (=
), e poi riutilizzato.
> x=3+5*2 > x+3 [1] 16
Per avere un elenco delle variabili in uso si può adoperare la funzione ls
> ls() [1] "x"
Nelle versioni vecchie di R si utilizzava l'operatore <-
al posto di =
, esattamente con lo stesso significato. Nelle nuove versioni si possono usare entrambi.
> x <- 5 > x [1] 5
Notare che, poiché ls
è una funzione, va utilizzata con le parentesi aperte e chiuse, anche se non prende nessun parametro.
R dispone di un aiuto in linea molto efficace. Basta digitare il comando ?
(punto interrogativo), seguito dal nome di una funzione per vedere la relativa pagina di manuale (in inglese). Se si vuole aiuto su di un comando o su di un operatore, per esempio su >
(maggiore), esso va racchiuso tra virgolette.
> ? sqrt (OK, viene visualizzato il manuale) > ? ">" (OK, viene visualizzato il manuale) > ? > (genera l'errore di cui sotto) Error: unexpected '>' in "? >"
Abbiamo già visto che in R esistono molte funzioni predefinite. Alcune di queste funzioni hanno tantissimi parametri (anche decine). Per rendere più facile invocarle, la maggior parte dei parametri sono facoltativi, e non c'è bisogno di indicarli. Inoltre, in R, i parametri si possono specificare sia nell'ordine in cui sono definiti nella funzione, che esplicitamente per nome.
Consideriamo la funzione log
, che ha due parametri. Il primo si chiama x
, è obbligatorio, ed è il valore di cui calcolare il logaritmo. Il secondo si chiama base
ed è la base del logaritmo. Quest'ultimo è facoltativo ed il valore di default è il numero di Nepero exp(1)
.
Queste informazioni sui parametri della funzione log
sono ricavabili dall'help in linea. Nella sezione Usage del manuale la funzione log
appare infatti indicata con la seguente sintassi: log(x, base = exp(1))
. Ne segue che log può essere utilizzata nei seguenti modi:
> log(4) (logaritmo naturale) [1] 1.386294 > log(4,2) (loagaritmo in base 2) [1] 2 > log(4,base=2) [1] 2 > log(base=2,x=4) [1] 2 > log(base=2,4) [1] 2
Come si vede, i parametri che sono dati senza nome vengono assegnati, uno dopo l'altro, a partire dal primo. I parametri per cui si è specificato un nome, invece, vengono associati al parametro corrispondente, indipendentemente dall'ordine in cui sono specificati.
Per uscire da R si può usare la funzione quit
. Poiché si tratta di una funzione, e non di un comando, bisogna invocarla con una coppia di parentesi aperte e chiuse, ovvero come quit()
. Il sistema chiede se si vuole salvare il workspace. Se si risponde affermativamente, tutte le variabili esistenti al momento vengono salvate. La volta successiva che R viene avviato, ricaricherà automaticamente il valore delle variabili.
> x=10
> quit()
Save workspace image? [y/n/c]: y
amato@sci138:~$ R
R version 2.7.1 (2008-06-23)
Copyright (C) 2008 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
..... righe omesse .....
[Previously saved workspace restored]
> x
[1] 10