R Cheat Sheet
Ultimo aggiornamento
Hello World e assegnazione
L'operatore di assegnazione idiomatico di R è <- (funziona anche l'operatore =).
| Operazione | Sintassi |
|---|---|
| Stampare un valore | print("Hello, World!") |
| Stampa automatica (console) | "Hello, World!" |
| Concatenare e stampare | cat("Hi", name, "\n") |
| Assegnare (idiomatico) | x <- 5 |
| Assegnare (anche valido) | x = 5 |
| Assegnazione a destra | 5 -> x |
| Commento | # this is a comment |
| Eseguire uno script | Rscript app.R |
Tipi di dati e vettori
Il vettore è la struttura dati fondamentale di R; anche un singolo valore è un vettore di lunghezza 1.
| Operazione | Sintassi |
|---|---|
| Vettore numerico | v <- c(1, 2, 3) |
| Vettore di caratteri | s <- c("a", "b") |
| Vettore logico | b <- c(TRUE, FALSE) |
| Sequenza di interi | 1:10 |
| Sequenza con passo | seq(0, 1, by = 0.1) |
| Ripetere valori | rep(0, times = 5) |
| Tipi base | numeric, character, logical, integer, complex |
| Controllare / forzare il tipo | class(x), as.numeric("42") |
Operazioni sui vettori
Le operazioni sono vettorizzate e si applicano elemento per elemento; l'indicizzazione parte da 1.
| Operazione | Sintassi |
|---|---|
| Accedere a un elemento (da 1) | v[1] |
| Estrarre un intervallo | v[2:4] |
| Filtro logico | v[v > 2] |
| Escludere un elemento | v[-1] |
| Calcoli elemento per elemento | v * 2, v1 + v2 |
| Lunghezza | length(v) |
| Riduzioni comuni | sum(v), mean(v), max(v) |
| Ordinare / invertire | sort(v), rev(v) |
| Vettore con nomi | c(a = 1, b = 2) |
Data frame
Un data frame è una tabella di colonne, ognuna un vettore della stessa lunghezza.
| Operazione | Sintassi |
|---|---|
| Creare un data frame | df <- data.frame(name = c("Ada"), age = c(30)) |
| Prime / ultime righe | head(df), tail(df) |
| Dimensioni | nrow(df), ncol(df), dim(df) |
| Nomi delle colonne | names(df), colnames(df) |
| Selezionare una colonna | df$age o df[["age"]] |
| Selezionare righe / colonne | df[1, ], df[, "age"] |
| Filtrare le righe | df[df$age > 18, ] |
| Aggiungere una colonna | df$adult <- df$age >= 18 |
| Statistiche riassuntive | summary(df) |
| Panoramica della struttura | str(df) |
Fattori e liste
I fattori memorizzano dati categorici; le liste contengono elementi di tipi diversi.
| Operazione | Sintassi |
|---|---|
| Creare un fattore | f <- factor(c("low", "high")) |
| Livelli del fattore | levels(f) |
| Fattore ordinato | factor(x, ordered = TRUE) |
| Contare per livello | table(f) |
| Creare una lista | l <- list(name = "Ada", scores = c(1, 2)) |
| Accedere per nome | l$name o l[["name"]] |
| Accedere per posizione | l[[1]] |
| Sottolista (resta una lista) | l[1] |
| Lunghezza / nomi | length(l), names(l) |
Controllo del flusso
Le condizioni vanno tra parentesi tonde e i blocchi tra graffe.
| Operazione | Sintassi |
|---|---|
| If / else if / else | if (x > 0) { ... } else if (x < 0) { ... } else { ... } |
| If-else vettorizzato | ifelse(v > 0, "pos", "neg") |
| Ciclo for | for (i in 1:10) { ... } |
| For su un vettore | for (x in v) { ... } |
| Ciclo while | while (x < 100) { ... } |
| Repeat con break | repeat { if (done) break } |
| Switch | switch(key, a = 1, b = 2) |
| Operatori logici | &&, ||, ! (scalari); &, | (vettoriali) |
Funzioni
Le funzioni sono oggetti di prima classe; viene restituita l'ultima espressione valutata.
| Operazione | Sintassi |
|---|---|
| Definire una funzione | add <- function(a, b) { a + b } |
| Return esplicito | return(a + b) |
| Argomento predefinito | greet <- function(name = "World") { ... } |
| Argomento variadico | f <- function(...) { sum(...) } |
| Chiamata per nome | box(w = 2, h = 3) |
| Funzione anonima | function(x) x * 2 |
| Anonima (forma breve) | \(x) x * 2 |
| Passare a una funzione di ordine superiore | sapply(1:3, function(x) x^2) |
La famiglia apply
Applica una funzione ai dati senza scrivere cicli espliciti.
| Funzione | Cosa fa |
|---|---|
apply(m, 1, sum) | Applica sulle righe (1) o sulle colonne (2) di una matrice |
sapply(v, f) | Applica su un vettore, semplifica in vettore/matrice |
lapply(v, f) | Applica su un vettore, restituisce sempre una lista |
vapply(v, f, numeric(1)) | Come sapply ma con tipo di ritorno verificato |
mapply(f, a, b) | Applica su più vettori in parallelo |
tapply(x, group, mean) | Applica una funzione per gruppo |
Map(f, a, b) | Apply multivariato che restituisce una lista |
Reduce(+, v) | Riduce un vettore con una funzione binaria |
Funzioni comuni per manipolare dati e fare statistica
Funzioni base usate spesso per riassumere e rimodellare i dati.
| Funzione | Cosa fa |
|---|---|
mean(v) / median(v) | Media / valore centrale |
sd(v) / var(v) | Deviazione standard / varianza |
min(v) / max(v) / range(v) | Minimo / massimo / entrambi |
quantile(v) | Quantili (ad es. quartili) |
table(x) | Frequenze dei valori |
unique(v) / duplicated(v) | Valori distinti / segnala duplicati |
is.na(v) / na.omit(df) | Trovare / rimuovere valori mancanti |
aggregate(y ~ g, df, mean) | Riassumere y per gruppo g |
order(v) | Ordine degli indici per l'ordinamento |
cor(x, y) | Correlazione tra due vettori |
La sintassi R che usi più spesso, in una sola pagina. Questa R cheat sheet è un riferimento rapido per il cuore del linguaggio: assegnazione e tipi di dati, vettori e operazioni sui vettori, data frame, fattori e liste, controllo del flusso, funzioni e la famiglia apply usata in tutta l'analisi dei dati con rstats.
Tutto quello che trovi qui è R base e funziona con un'installazione standard, senza pacchetti aggiuntivi. Copia ciò che ti serve o prova ogni snippet dal vivo nel playground R, senza alcuna configurazione.
Domande frequenti sulla R cheat sheet
Questa R cheat sheet è gratuita?
I vettori in R partono davvero da 1?
v[1] restituisce il primo elemento e v[length(v)] l'ultimo. Gli indici negativi hanno un significato speciale: v[-1] rimuove il primo elemento invece di contare dalla fine. Questa convenzione vale allo stesso modo per vettori, liste e data frame.Cos'è un data frame in R?
df[rows, columns], selezioni una colonna con df$name e lo esamini con str(df) o summary(df).