Función replicate() en R

Manav Narula 25 febrero 2021
Función replicate() en R

La función replicate() puede utilizarse para crear simulaciones, ya que puede repetir una expresión un número determinado de veces. También podemos controlar el tipo del resultado final como un array o una lista utilizando el parámetro simplify.

A continuación se muestra un ejemplo sencillo de la función replicate():

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

Como puede ver en el ejemplo anterior, 1 es la expresión que se repite 5 veces. Observe que el resultado final es un array. Si añadimos el parámetro simplify a la función (que es True por defecto) y lo ponemos a False, obtendremos una lista en lugar de un array. Por ejemplo:

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

También podemos utilizar la función replicate() para simulaciones más complejas, como la creación de un array bidimensional. El siguiente fragmento de código mostrará cómo lo hacemos.

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

En este ejemplo, usamos la función seq() para crear una secuencia simple. Crea una secuencia del 1 al 10 con un incremento de 1. replicate() repite la secuencia 5 veces para generar un array 2-D.

También podemos utilizar el bucle for() para esta situación. Por ejemplo:

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

Tenga en cuenta que tenemos que utilizar un vector numérico como una declaración extra fuera de la llave; de lo contrario, la función replicate() obtendrá el valor NULL ya que el valor se vierte como basura y no se almacena ya que estamos utilizando el bucle for().

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

Producción :

[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL

[[5]]
NULL
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

Artículo relacionado - R Function