funzione replicate() in R

Manav Narula 30 marzo 2021
funzione replicate() in R

La funzione replicate() può essere utilizzata per creare simulazioni poiché può ripetere un’espressione un numero specifico di volte. Possiamo anche controllare il tipo di risultato finale come array o lista usando il parametro semplifica.

Di seguito è mostrato un semplice esempio della funzione replicate():

replicate(5,1)
[1] 1 1 1 1 1

Come puoi vedere nell’esempio sopra, 1 è l’espressione che viene ripetuta 5 volte. Nota che il risultato finale qui è un array. Se aggiungiamo il parametro semplifica alla funzione (che è True di default) e lo impostiamo su False, otterremo una lista invece di un array. Per esempio:

typeof(replicate(5,1,simplify = FALSE))
[1] "list"

Possiamo anche usare replicate() per simulazioni più complesse, come la creazione di un array 2-D. Il seguente frammento di codice mostrerà come lo facciamo.

replicate(5, seq(1,10,1))
      [,1] [,2] [,3] [,4] [,5]
 [1,]    1    1    1    1    1
 [2,]    2    2    2    2    2
 [3,]    3    3    3    3    3
 [4,]    4    4    4    4    4
 [5,]    5    5    5    5    5
 [6,]    6    6    6    6    6
 [7,]    7    7    7    7    7
 [8,]    8    8    8    8    8
 [9,]    9    9    9    9    9
[10,]   10   10   10   10   10

In questo esempio, usiamo la funzione seq() per creare una semplice sequenza. Crea una sequenza da 1 a 10 con un incremento di 1. replicate() ripete la sequenza 5 volte per generare un array 2-D.

Possiamo anche usare il bucle for() per una situazione del genere. Per esempio:

n <- numeric(5)
arr2d <- replicate(5, {
   for(i in 1:5){n[i] <- print(i)};n} )
print(arr2d)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    1    1    1
[2,]    2    2    2    2    2
[3,]    3    3    3    3    3
[4,]    4    4    4    4    4
[5,]    5    5    5    5    5

Nota che dobbiamo usare un vettore numerico come un’istruzione extra al di fuori della parentesi graffa; altrimenti, la funzione replicate() otterrà il valore NULL poiché il valore viene scaricato come spazzatura e non viene memorizzato poiché stiamo usando il bucle for().

arr2d <- replicate(5, {
   for(i in 1:5){print(i)}} )
print(arr2d)

Produzione:

[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL

[[5]]
NULL
Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Articolo correlato - R Function