Vai al contenuto principale

Tutorial sulle Funzioni in R

Scopri cosa sono le funzioni in R, i diversi tipi di funzioni in R e come creare le tue funzioni in R.
Aggiornato 29 set 2026  · 11 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Se stai pensando di intraprendere una carriera nella data science, prima inizi a programmare, meglio è. Qualunque sia il linguaggio di programmazione che hai scelto per iniziare il tuo percorso, a un certo punto avrai un appuntamento con le funzioni. 

Le funzioni sono un concetto centrale in quasi tutti i linguaggi di programmazione moderni, inclusi quelli popolari nella data science, come Python, Julia e, ovviamente, R.

In questo tutorial vedremo cosa sono le funzioni in R e come puoi usarle. Coprendo scopo, sintassi e tipologia delle funzioni disponibili in R, avrai tutto il necessario per padroneggiare questo concetto fondamentale nella programmazione. E in più, farai conoscenza con l’arte di creare funzioni. 

Che cos’è una funzione in R?

In programmazione, le funzioni sono istruzioni organizzate insieme per svolgere un compito specifico. La logica alla base delle funzioni è creare programmi autonomi che possono essere richiamati solo quando necessario. 

Con le funzioni, gli sviluppatori non devono più scrivere un programma da zero, evitando ripetizioni e migliorando robustezza e leggibilità del codice. Per questo, come regola generale, è buona pratica creare una funzione ogni volta che prevedi di eseguire un determinato insieme di istruzioni più di due volte nel tuo codice.

Le funzioni possono essere usate per infiniti scopi e possono assumere varie forme. In generale, la grande maggioranza delle funzioni prende dei dati in input, li elabora e restituisce un risultato. I dati su cui la funzione opera sono specificati dai cosiddetti argomenti, che possono anche essere usati per controllare o modificare il modo in cui la funzione svolge i compiti.

A seconda dell’origine, possiamo distinguere tre principali tipi di funzioni in R:

  • Funzioni integrate
  • Funzioni disponibili nei pacchetti R
  • Funzioni definite dall’utente (UDF)

Nelle sezioni seguenti spiegheremo le particolarità dei diversi tipi di funzioni disponibili in R. 

Funzioni integrate in R

R è un potente linguaggio di programmazione che include un ampio catalogo di funzioni integrate richiamabili in qualsiasi momento. In quanto linguaggio orientato alla matematica, R offre un buon numero di funzioni per eseguire operazioni numeriche. Qui sotto trovi un elenco di alcune tra le più utili:

  • print(). Mostra un oggetto R sulla console di R
  • min(), max(). Calcola il minimo e il massimo di un vettore numerico
  • sum(). Calcola la somma di un vettore numerico
  • mean(). Calcola la media di un vettore numerico
  • range(). Calcola i valori minimo e massimo di un vettore numerico
  • str(). Mostra la struttura di un oggetto R
  • ncol(). Restituisce il numero di colonne di una matrice o di un dataframe
  • length(). Restituisce il numero di elementi in un oggetto R, come un vettore, una lista o una matrice.

Nel codice seguente puoi vedere quanto sia semplice usare queste funzioni per calcolare alcune statistiche da un vettore:

>>> v <- c(1, 3, 0.2, 1.5, 1.7)
>>> print(v)
[1] 1.0 3.0 0.2 1.5 1.7
>>> sum(v)
[1] 7.4
>>> mean(v)
[1] 1.48
>>> length(v)
[1] 5

Puoi approfondire le funzioni in R e molto altro nel nostro completo percorso di competenze R, che ti aiuterà a imparare a programmare come uno sviluppatore. 

Funzioni nei pacchetti R

Per quanto numerose e varie, le funzioni integrate non bastano per fare tutte le cose interessanti che puoi fare con R, dalla creazione di efficaci visualizzazioni di dati alla creazione di potenti modelli di machine learning. 

La grande maggioranza delle funzioni per svolgere questi compiti è disponibile in pacchetti o librerie esterni. I pacchetti sono raccolte di funzioni R, dati e codice compilato in un formato ben definito, creati per aggiungere funzionalità specifiche. La maggior parte di questi pacchetti può essere usata gratuitamente e si trova in popolari repository, come CRAN, che attualmente conta quasi 20.000 pacchetti contribuiti. 

Per usare le funzioni disponibili in un pacchetto, devi prima installarlo. Per esempio, se vuoi installare stringr, un popolare pacchetto per lavorare con le espressioni regolari, puoi usare la seguente istruzione:

install.packages('stringr')

Una volta installato, per caricarlo nel tuo ambiente R usa l’istruzione library

library(stringr)

Ora sei pronto a usare tutte le funzioni disponibili nel pacchetto stringr. Per esempio, proviamo la funzione str_detect(), che restituisce un vettore logico con TRUE per ogni elemento della stringa che corrisponde al pattern e FALSE altrimenti.

str_detect('DataCamp', "Data")
[1] TRUE

Se ti interessa saperne di più sui pacchetti R e su come usarli, dai un’occhiata a questo tutorial sui pacchetti R di DataCamp.

Funzioni definite dall’utente

Il modo migliore per capire come funzionano le funzioni in R è creare le tue funzioni. Le cosiddette funzioni definite dall’utente (UDF) sono progettate dagli sviluppatori per svolgere un compito specifico. 

Le funzioni in R adottano normalmente la seguente sintassi:

function_name <- function(argument_1, argument_2) { 
  function body
  return (output)
}

Possiamo distinguere quattro elementi principali:

  • Nome della funzione. Per creare una UDF, per prima cosa devi assegnarle un nome e salvarla come nuovo oggetto. Ti basta poi richiamare il nome ogni volta che vuoi usare la funzione. 
  • Argomenti. Gli argomenti della funzione (noti anche come parametri) sono forniti tra parentesi tonde. Gli argomenti sono fondamentali perché la funzione sappia quali dati prendere come input e/o come modificare il comportamento della funzione. 
  • Corpo della funzione. Tra le parentesi graffe si trova il corpo della funzione, cioè le istruzioni per risolvere un compito specifico sulla base delle informazioni fornite dagli argomenti. 
  • Istruzione di return. L’istruzione di return è necessaria se vuoi che la funzione salvi come variabili il risultato o i risultati derivanti dalle operazioni nel corpo della funzione. 

Per esempio, se vuoi creare una funzione che calcola la media di due numeri:

mean_two_numbers <- function(num_1, num_2) {
  mean <- (num_1 + num_2) / 2
  return (mean)
}

Ora, se vuoi calcolare la media di 10 e 20, ti basta richiamare la funzione così:

>>> mean_two_numbers(10,20)
[1] 15

Tipi di argomenti nelle funzioni R

Gli argomenti sono elementi fondamentali in ogni funzione. Anche se teoricamente è possibile scrivere una funzione senza parametri (vedi l’esempio sotto), la maggior parte delle funzioni ha degli argomenti. Ha senso: gli argomenti dicono alla funzione quali dati prendere in input. Allo stesso modo, se vogliamo dotare una funzione di vari modi di svolgere un compito, saranno gli argomenti a occuparsene.

hello <- function() {
  print('hello, my friend')
}
>>> hello()
[1] "hello, my friend"

Non c’è un limite al numero di argomenti nelle funzioni R; puoi aggiungerli tra parentesi separati da virgole. In generale, le funzioni con più argomenti tendono a essere più complesse.

Dopo aver creato una funzione con parametri, ogni volta che vuoi usarla dovrai fornire i valori dei diversi parametri; altrimenti, R genererà un errore. Per esempio, se non fornisci i valori dei due numeri per calcolarne la media, la nostra funzione non funzionerà.

Tuttavia, puoi evitare questo errore usando argomenti predefiniti al momento di definire una funzione. Gli argomenti predefiniti forniscono un valore di default che verrà usato se richiami la funzione senza fornire quell’argomento. Torniamo di nuovo alla nostra funzione per calcolare la media di due numeri. Questa volta la definiremo aggiungendo un argomento predefinito per il secondo numero.

mean_two_numbers <- function(num_1, num_2 = 30) {
  mean <- (num_1 + num_2) / 2
  return (mean)
}

Se ora richiamiamo la funzione senza fornire il valore del parametro num_2, R prenderà automaticamente il valore predefinito (cioè 30):

>>> mean_two_numbers(num_1 = 10)
[1] 20

Capire i valori di ritorno nelle funzioni R

Le funzioni normalmente prendono dei dati in input e forniscono un risultato in output. In alcuni linguaggi di programmazione, per salvare il risultato di una funzione come variabile è necessario includere esplicitamente l’istruzione return alla fine del corpo della funzione. Altrimenti, la funzione mostrerà solo un valore che esiste unicamente nello scope della variabile.

Non è questo il caso di R, che restituirà sempre un valore che può essere salvato in una variabile. Tuttavia, per la leggibilità, è sempre buona pratica includere l’istruzione di return quando definisci una funzione.

mean_two_numbers <- function(num_1, num_2) {
  # Function with return 
  mean <- (num_1 + num_2) / 2
  return (mean)
}
mean_two_numbers_2 <- function(num_1, num_2) {
  # Function without return
  mean <- (num_1 + num_2) / 2
  mean
}
> mean_two_numbers(10,50)
[1] 30
 > mean_two_numbers_2(10,50)
[1] 30

Infine, se vuoi che la tua funzione restituisca più valori, dovrai memorizzare i diversi risultati in una lista e includerla nell’istruzione di return:

mean_sum <- function(num_1, num_2) {
  mean <- (num_1 + num_2) / 2
  sum <- num_1 + num_2
  return (list(mean, sum))
}
>>> mean_sum (10, 20)
[[1]]
[1] 15
[[2]]
[1] 30

Richiamare le funzioni in R

Nelle sezioni precedenti abbiamo già visto vari esempi su come richiamare una funzione. Tuttavia, è importante chiarire come R lavora dietro le quinte quando passiamo gli argomenti. 

R ammette due modi di passare gli argomenti: per posizione e per nome. Se seguiamo la prima strategia, dovremo scrivere i valori rispettando lo stesso ordine degli argomenti definito nella funzione. 

Se passiamo gli argomenti per nome, dovremo specificare esplicitamente i nomi degli argomenti e i loro valori associati. Dato che abbiamo messo in corrispondenza argomenti e valori, l’ordine non conta.

Infine, è anche possibile mescolare le due strategie. In questo caso, gli argomenti nominati vengono estratti dall’elenco degli argomenti e abbinati per primi, mentre il resto degli argomenti è abbinato per posizione.

hello <- function(name, surname) {
  print(paste('Hello', name, surname))
}
# Chiamata degli argomenti per posizione
> hello('Greta','Thunberg')
[1] "Hello, Greta Thunberg"
# Chiamata degli argomenti per nome
> hello(surname='Thunberg', name='Greta')
[1] "Hello, Greta Thunberg"
# Chiamata degli argomenti per posizione e per nome
> hello(surname='Thunberg', 'Greta')
[1] "Hello, Greta Thunberg"

Documentare le funzioni in R

Una buona pratica quando si creano funzioni è fornire documentazione su come usarle, soprattutto quando le funzioni sono complesse. Un modo informale per farlo è aggiungere commenti nel corpo delle funzioni. Puoi aggiungere la documentazione richiamando la funzione senza parametri:

hello <- function(name, surname) {
  # Say hello to a person with name and surname
  print(paste('Hello', name, surname))
}
>>> hello
function(name, surname) {
  # Say hello to a person with name and surname
  print(paste('Hello,', name, surname))

Tuttavia, se la tua funzione fa parte di un pacchetto più grande e vuoi documentarla, dovresti scrivere una documentazione formale in un documento .Rd separato. Vedi il risultato di questa documentazione quando guardi il file di help di una data funzione, ad esempio ?mean. 

Conclusione

Sei arrivato alla fine del tutorial. Complimenti! Come in molti altri linguaggi, le funzioni sono elementi vitali in R. Che siano integrate, sviluppate come parte di pacchetti esterni o create da te, padroneggiare le funzioni è una tappa importante nel tuo percorso di programmazione. Se vuoi continuare a sviluppare le tue competenze sulle funzioni in R, dai un’occhiata alle risorse seguenti!

Argomenti
R
Data Science

Corsi R

Corso

Introduzione alla scrittura di funzioni in R

4 ore
53.9K
Migliora le tue abilità con R imparando a scrivere funzioni efficienti e riutilizzabili.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro