Learn in 10 minutes

Learn in 10 minutes

Impara R in 10 minuti

R è un potente linguaggio di programmazione e ambiente per il calcolo statistico, l’analisi dei dati e la visualizzazione. Questo tutorial copre i concetti essenziali per iniziare con la programmazione in R.

1. Iniziare con R

Iniziamo con un programma semplice. Apri R o RStudio e inserisci il seguente codice:

print("Ciao, Mondo!")

Puoi anche eseguirlo nella console R. L’output sarà:

[1] "Ciao, Mondo!"

Questo semplice programma dimostra la funzionalità di output di base di R. La funzione print() visualizza informazioni di testo nella console.

2. Sintassi di base e variabili

La sintassi di R è progettata per il calcolo statistico e l’analisi dei dati. Esploriamo l’assegnazione di variabili e le operazioni di base.

# Questo è un commento
x <- 5  # Assegnazione usando l'operatore <-
y = 10   # Assegnazione usando l'operatore = (meno comune)
print(x + y)

Regole di sintassi di base in R:

  • Assegnazione: Usa <- per l’assegnazione di variabili (preferito) o =
  • Commenti: I commenti su una riga iniziano con #
  • Funzioni: Usa le parentesi () per le chiamate di funzione
  • Vettori: R è vettorizzato - le operazioni funzionano su interi vettori

3. Tipi di dati e strutture

R ha diversi tipi di dati fondamentali e strutture per il calcolo statistico.

3.1 Tipi di dati di base

# Numerico (double)
num <- 3.14
print(class(num))

# Intero
int <- 42L
print(class(int))

# Carattere (stringa)
text <- "Ciao R"
print(class(text))

# Logico (booleano)
flag <- TRUE
print(class(flag))

3.2 Vettori

I vettori sono la struttura dati fondamentale in R. Sono array unidimensionali che possono contenere dati numerici, caratteri o logici.

# Creazione di vettori
numeric_vector <- c(1, 2, 3, 4, 5)
character_vector <- c("mela", "banana", "ciliegia")
logical_vector <- c(TRUE, FALSE, TRUE)

# Operazioni sui vettori
print(numeric_vector * 2)  # Moltiplica ogni elemento per 2
print(numeric_vector + 1)  # Aggiungi 1 a ogni elemento
print(length(numeric_vector))  # Ottieni la lunghezza del vettore

3.3 Liste

Le liste sono contenitori flessibili che possono contenere elementi di tipi diversi.

# Creazione di una lista
my_list <- list(
  name = "Giovanni",
  age = 30,
  scores = c(85, 92, 78),
  active = TRUE
)

# Accesso agli elementi della lista
print(my_list$name)
print(my_list[["age"]])
print(my_list[[3]])

3.4 Data frame

I data frame sono la struttura dati più importante per l’analisi dei dati in R. Sono simili a tabelle con righe e colonne.

# Creazione di un data frame
df <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(25, 30, 35),
  score = c(88, 92, 85)
)

# Visualizzazione del data frame
print(df)
print(str(df))  # Struttura del data frame
print(summary(df))  # Statistiche di riepilogo

4. Operazioni di base

R fornisce un ricco set di operatori per operazioni matematiche e logiche.

# Operazioni aritmetiche
a <- 10
b <- 3

print(a + b)  # Addizione
print(a - b)  # Sottrazione
print(a * b)  # Moltiplicazione
print(a / b)  # Divisione
print(a ^ b)  # Elevamento a potenza
print(a %% b) # Modulo
print(a %/% b) # Divisione intera

# Operazioni di confronto
print(a > b)   # Maggiore di
print(a == b)  # Uguale a
print(a != b)  # Diverso da
print(a <= b)  # Minore o uguale a

# Operazioni logiche
print(TRUE & FALSE)  # AND
print(TRUE | FALSE)  # OR
print(!TRUE)         # NOT

5. Strutture di controllo

R fornisce strutture di controllo standard per il flusso del programma.

5.1 Istruzioni if

age <- 20

if (age >= 18) {
  print("Adulto")
} else if (age >= 13) {
  print("Adolescente")
} else {
  print("Bambino")
}

5.2 Cicli for

# Iterazione su un vettore
fruits <- c("mela", "banana", "ciliegia")
for (fruit in fruits) {
  print(fruit)
}

# Usando una sequenza
for (i in 1:5) {
  print(paste("Numero:", i))
}

5.3 Cicli while

count <- 1
while (count <= 5) {
  print(count)
  count <- count + 1
}

6. Funzioni

Le funzioni in R sono blocchi di codice riutilizzabili per compiti specifici.

# Definizione di funzione di base
calculate_area <- function(length, width) {
  area <- length * width
  return(area)
}

# Chiamata della funzione
result <- calculate_area(5, 3)
print(result)

# Funzione con parametri predefiniti
greet <- function(name = "Ospite") {
  return(paste("Ciao,", name))
}

print(greet("Alice"))
print(greet())  # Usa il parametro predefinito

7. Manipolazione dei dati

R eccelle nella manipolazione dei dati. Esploriamo alcune operazioni di base.

# Data frame di esempio
students <- data.frame(
  name = c("Alice", "Bob", "Charlie", "Diana"),
  math_score = c(85, 92, 78, 95),
  science_score = c(88, 90, 82, 96),
  grade = c("A", "A", "B", "A")
)

# Sottoinsiemi di dati
print(students[students$math_score > 85, ])  # Righe dove math_score > 85
print(students[, c("name", "math_score")])   # Colonne specifiche

# Aggiunta di nuove colonne
students$total_score <- students$math_score + students$science_score
students$average_score <- students$total_score / 2

print(students)

8. Visualizzazione dei dati

R ha potenti capacità di visualizzazione, specialmente con ggplot2.

# Grafici di base (R base)
# Crea alcuni dati di esempio
x <- 1:10
y <- x^2

# Grafico a dispersione
plot(x, y, main = "Grafico a dispersione", xlab = "X", ylab = "Y", col = "blu", pch = 16)

# Grafico a linee
plot(x, y, type = "l", main = "Grafico a linee", xlab = "X", ylab = "Y", col = "rosso")

# Istogramma
hist(rnorm(100), main = "Istogramma", xlab = "Valori", col = "azzurro")

8.1 Usando ggplot2 (se installato)

# Installa e carica ggplot2 se non già installato
# install.packages("ggplot2")
library(ggplot2)

# Crea un data frame di esempio
plot_data <- data.frame(
  category = c("A", "B", "C", "D"),
  value = c(25, 40, 30, 35)
)

# Crea un grafico a barre
ggplot(plot_data, aes(x = category, y = value)) +
  geom_bar(stat = "identity", fill = "blu acciaio") +
  labs(title = "Esempio di grafico a barre", x = "Categoria", y = "Valore") +
  theme_minimal()

9. Analisi statistica

R è progettato per il calcolo statistico. Ecco alcune funzioni statistiche di base.

# Dati di esempio
data <- c(23, 45, 67, 34, 56, 78, 89, 12, 45, 67)

# Statistiche di base
print(mean(data))     # Media
print(median(data))   # Mediana
print(sd(data))       # Deviazione standard
print(var(data))      # Varianza
print(min(data))      # Minimo
print(max(data))      # Massimo
print(summary(data))  # Riepilogo a cinque numeri

# Correlazione
x <- 1:10
y <- x + rnorm(10)  # Aggiungi un po' di rumore
print(cor(x, y))    # Coefficiente di correlazione

# Regressione lineare
model <- lm(y ~ x)
print(summary(model))

10. Lavorare con i file

R fornisce funzioni per leggere e scrivere file.

# Scrittura su file
write.csv(students, "students.csv", row.names = FALSE)

# Lettura da file
# read_data <- read.csv("students.csv")
# print(read_data)

# Lavorare con file di testo
# writeLines(c("Riga 1", "Riga 2", "Riga 3"), "example.txt")
# text_content <- readLines("example.txt")
# print(text_content)

11. Pacchetti e librerie

La potenza di R deriva dal suo ecosistema esteso di pacchetti.

# Installazione di pacchetti
# install.packages("dplyr")  # Per la manipolazione dei dati
# install.packages("ggplot2") # Per la visualizzazione

# Caricamento di pacchetti
library(dplyr)
library(ggplot2)

# Usando dplyr per la manipolazione dei dati
# students %>%
#   filter(math_score > 85) %>%
#   select(name, math_score) %>%
#   arrange(desc(math_score))

12. Gestione degli errori

R fornisce meccanismi per la gestione degli errori.

# Gestione degli errori di base
tryCatch({
  result <- 10 / 0
  print(result)
}, error = function(e) {
  print(paste("Errore verificato:", e$message))
}, finally = {
  print("Questo viene sempre eseguito")
})

# Usando try()
result <- try(10 / 0, silent = TRUE)
if (inherits(result, "try-error")) {
  print("Divisione fallita")
}

13. Argomenti avanzati

13.1 Funzioni della famiglia Apply

Le funzioni della famiglia apply sono potenti per operazioni vettorizzate.

# Crea una matrice
mat <- matrix(1:12, nrow = 3, ncol = 4)
print(mat)

# Applica funzioni
print(apply(mat, 1, mean))  # Medie per riga
print(apply(mat, 2, sum))   # Somme per colonna

# lapply per le liste
my_list <- list(a = 1:5, b = 6:10, c = 11:15)
print(lapply(my_list, mean))  # Media di ogni elemento della lista

# sapply (versione semplificata)
print(sapply(my_list, mean))

13.2 Manipolazione delle stringhe

text <- "Ciao Programmazione R"

print(toupper(text))    # Converti in maiuscolo
print(tolower(text))    # Converti in minuscolo
print(nchar(text))      # Conta caratteri
print(substr(text, 1, 5))  # Estrai sottostringa

# Usando il pacchetto stringr (se installato)
# library(stringr)
# str_split(text, " ")  # Dividi stringa

13.3 Data e ora

# Data e ora corrente
current_time <- Sys.time()
print(current_time)

# Formattazione date
formatted_date <- format(current_time, "%Y-%m-%d")
print(formatted_date)

# Aritmetica delle date
today <- Sys.Date()
future_date <- today + 30
print(future_date)

14. Best practice

Ecco alcuni consigli per scrivere codice R migliore:

  • Usa nomi di variabili significativi
  • Commenta il tuo codice appropriatamente
  • Usa operazioni vettorizzate invece di cicli quando possibile
  • Carica i pacchetti all’inizio del tuo script
  • Usa indentazione consistente (2 spazi raccomandati)
  • Testa il tuo codice con dati di esempio
  • Usa il controllo di versione per i tuoi progetti

15. Prossimi passi

Per continuare a imparare R:

  1. Pratica: Lavora su piccoli progetti di analisi dei dati
  2. Esplora i pacchetti: Impara dplyr, ggplot2, tidyr e altri pacchetti essenziali
  3. Risorse online: Usa la documentazione di R, Stack Overflow e R-bloggers
  4. Libri: “R for Data Science” di Hadley Wickham
  5. Corsi: Segui corsi online sull’analisi dei dati con R

R è uno strumento potente per il calcolo statistico e l’analisi dei dati. Con la pratica, sarai in grado di eseguire manipolazioni di dati complesse, creare bellissime visualizzazioni e condurre sofisticate analisi statistiche.