R - Funzioni

Una funzione è un insieme di istruzioni organizzate insieme per eseguire un'attività specifica. R ha un gran numero di funzioni integrate e l'utente può creare le proprie funzioni.

In R, una funzione è un oggetto quindi l'interprete R è in grado di passare il controllo alla funzione, insieme agli argomenti che potrebbero essere necessari affinché la funzione compia le azioni.

La funzione a sua volta svolge il suo compito e restituisce il controllo all'interprete così come qualsiasi risultato che può essere memorizzato in altri oggetti.

Definizione di funzione

Una funzione R viene creata utilizzando la parola chiave function. La sintassi di base della definizione di una funzione R è la seguente:

function_name <- function(arg_1, arg_2, ...) {
   Function body 
}

Componenti della funzione

Le diverse parti di una funzione sono:

  • Function Name- Questo è il nome effettivo della funzione. È memorizzato nell'ambiente R come un oggetto con questo nome.

  • Arguments- Un argomento è un segnaposto. Quando viene richiamata una funzione, si passa un valore all'argomento. Gli argomenti sono facoltativi; ovvero, una funzione non può contenere argomenti. Anche gli argomenti possono avere valori predefiniti.

  • Function Body - Il corpo della funzione contiene una raccolta di istruzioni che definisce cosa fa la funzione.

  • Return Value - Il valore di ritorno di una funzione è l'ultima espressione nel corpo della funzione da valutare.

R ne ha molti in-builtfunzioni che possono essere richiamate direttamente nel programma senza prima definirle. Possiamo anche creare e utilizzare le nostre funzioni denominateuser defined funzioni.

Funzione incorporata

Semplici esempi di funzioni integrate sono seq(), mean(), max(), sum(x) e paste(...)ecc. Vengono richiamati direttamente dai programmi scritti dall'utente. È possibile fare riferimento alle funzioni R più utilizzate.

# Create a sequence of numbers from 32 to 44.
print(seq(32,44))

# Find mean of numbers from 25 to 82.
print(mean(25:82))

# Find sum of numbers frm 41 to 68.
print(sum(41:68))

Quando eseguiamo il codice sopra, produce il seguente risultato:

[1] 32 33 34 35 36 37 38 39 40 41 42 43 44
[1] 53.5
[1] 1526

Funzione definita dall'utente

Possiamo creare funzioni definite dall'utente in R. Sono specifiche per ciò che un utente desidera e una volta create possono essere utilizzate come le funzioni integrate. Di seguito è riportato un esempio di come viene creata e utilizzata una funzione.

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
   for(i in 1:a) {
      b <- i^2
      print(b)
   }
}

Chiamare una funzione

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
   for(i in 1:a) {
      b <- i^2
      print(b)
   }
}

# Call the function new.function supplying 6 as an argument.
new.function(6)

Quando eseguiamo il codice sopra, produce il seguente risultato:

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[1] 36

Chiamare una funzione senza un argomento

# Create a function without an argument.
new.function <- function() {
   for(i in 1:5) {
      print(i^2)
   }
}	

# Call the function without supplying an argument.
new.function()

Quando eseguiamo il codice sopra, produce il seguente risultato:

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25

Chiamare una funzione con valori di argomento (per posizione e nome)

Gli argomenti di una chiamata di funzione possono essere forniti nella stessa sequenza definita nella funzione oppure possono essere forniti in una sequenza diversa ma assegnati ai nomi degli argomenti.

# Create a function with arguments.
new.function <- function(a,b,c) {
   result <- a * b + c
   print(result)
}

# Call the function by position of arguments.
new.function(5,3,11)

# Call the function by names of the arguments.
new.function(a = 11, b = 5, c = 3)

Quando eseguiamo il codice sopra, produce il seguente risultato:

[1] 26
[1] 58

Chiamata a una funzione con argomento predefinito

Possiamo definire il valore degli argomenti nella definizione della funzione e chiamare la funzione senza fornire alcun argomento per ottenere il risultato predefinito. Ma possiamo anche chiamare tali funzioni fornendo nuovi valori dell'argomento e ottenere un risultato non predefinito.

# Create a function with arguments.
new.function <- function(a = 3, b = 6) {
   result <- a * b
   print(result)
}

# Call the function without giving any argument.
new.function()

# Call the function with giving new values of the argument.
new.function(9,5)

Quando eseguiamo il codice sopra, produce il seguente risultato:

[1] 18
[1] 45

Valutazione pigra della funzione

Gli argomenti delle funzioni vengono valutati pigramente, il che significa che vengono valutati solo quando necessario dal corpo della funzione.

# Create a function with arguments.
new.function <- function(a, b) {
   print(a^2)
   print(a)
   print(b)
}

# Evaluate the function without supplying one of the arguments.
new.function(6)

Quando eseguiamo il codice sopra, produce il seguente risultato:

[1] 36
[1] 6
Error in print(b) : argument "b" is missing, with no default