replicate() função em R

Manav Narula 25 fevereiro 2021
replicate() função em R

A função replicate() pode ser utilizada para criar simulações, uma vez que pode repetir uma expressão um número específico de vezes. Podemos também controlar o tipo do resultado final como um array ou lista utilizando o parâmetro simplify.

Um exemplo simples da função replicate() é mostrado abaixo:

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

Como se pode ver no exemplo acima, 1 é a expressão que é repetida 5 vezes. Note-se que o resultado final aqui é um array. Se adicionarmos o parâmetro simplify à função (que é True por defeito) e o definirmos para False, obteremos uma lista em vez de um array. Por exemplo, o parâmetro False:

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

Também podemos utilizar o parâmetro replicate() para simulações mais complexas, como a criação de um array 2-D. O seguinte trecho de código irá mostrar como o fazemos.

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

Neste exemplo, utilizamos a função seq() para criar uma sequência simples. Cria uma sequência de 1 a 10 com um incremento de 1. replicate() repete a sequência 5 vezes para gerar um array 2-D.

Também podemos utilizar o laço for() para tal situação. Por exemplo:

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

Note-se que temos de utilizar um vector numérico como uma declaração extra fora do parêntese; caso contrário, a função replicate() irá obter o valor NULL à medida que o valor é despejado como lixo e não é armazenado uma vez que estamos a utilizar o laço for().

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

Resultado:

[[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

Artigo relacionado - R Function