Как использовать функцию replicate() в R (с примерами)


Вы можете использовать функцию replicate() для повторного вычисления некоторого выражения в R определенное количество раз.

Эта функция использует следующий базовый синтаксис:

повторить (n, выражение)

куда:

  • n : количество повторных вычислений некоторого выражения.
  • expr : выражение для оценки.

В следующих примерах показано, как использовать эту функцию на практике.

Пример 1. Повторение значения несколько раз

В следующем коде показано, как использовать функцию replicate() для повторной оценки одного значения несколько раз:

#replicate the value 3 exactly 10 times
replicate(n= 10 , 3)

[1] 3 3 3 3 3 3 3 3 3 3

#replicate the letter 'A' exactly 7 times
replicate(n= 7 , 'A')

[1] "A" "A" "A" "A" "A" "A" "A"

#replicate FALSE exactly 5 times
replicate(n= 5 , FALSE )

[1] FALSE FALSE FALSE FALSE FALSE

Пример 2. Повторение функции несколько раз

Теперь предположим, что мы хотели бы повторно оценить некоторую функцию.

Например, предположим, что мы используем функцию rnorm() для получения трех значений случайной величины , которая следует нормальному распределению со средним значением, равным 0, и стандартным отклонением, равным 1:

#make this example reproducible
set. seed (1)

#generate 3 values that follow normal distribution
rnorm(3, mean= 0 , sd= 1 ) 

[1] -0.6264538 0.1836433 -0.8356286

Используя функцию replicate() , мы можем многократно выполнять эту функцию rnorm() определенное количество раз.

Например, мы можем вычислить эту функцию 5 раз:

#make this example reproducible
set. seed (1)

#generate 3 values that follow normal distribution (replicate this 4 times)
replicate(n= 4 , rnorm(3, mean= 0 , sd= 1 ))

 [,1] [,2] [,3] [,4]
[1,] 1.5952808 0.4874291 -0.3053884 -0.6212406
[2,] 0.3295078 0.7383247 1.5117812 -2.2146999
[3,] -0.8204684 0.5757814 0.3898432 1.1249309

В результате получается матрица с 3 строками и 4 столбцами.

Или, возможно, мы хотели бы оценить эту функцию 6 раз:

#make this example reproducible
set. seed (1)

#generate 3 values that follow normal distribution (replicate this 6 times)
replicate(n= 6 , rnorm(3, mean= 0 , sd= 1 ))

 [,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1.5952808 0.4874291 -0.3053884 -0.6212406 -0.04493361 0.8212212
[2,] 0.3295078 0.7383247 1.5117812 -2.2146999 -0.01619026 0.5939013
[3,] -0.8204684 0.5757814 0.3898432 1.1249309 0.94383621 0.9189774

В результате получается матрица с 6 строками и 3 столбцами.

Использование replicate() для имитации данных

Функция replicate() особенно полезна для запуска симуляций.

Например, предположим, что мы хотим создать 5 выборок размера n = 10, каждая из которых подчиняется нормальному распределению.

Мы можем использовать функцию replicate() для создания 5 разных выборок, а затем мы можем использовать функцию colMeans() для нахождения среднего значения каждой выборки:

#make this example reproducible
set. seed (1)

#create 5 samples each of size n=10
data <- replicate(n=5, rnorm(10, mean= 0 , sd= 1 ))

#view samples
data

 [,1] [,2] [,3] [,4] [,5]
 [1,] -0.6264538 1.51178117 0.91897737 1.35867955 -0.1645236
 [2,] 0.1836433 0.38984324 0.78213630 -0.10278773 -0.2533617
 [3,] -0.8356286 -0.62124058 0.07456498 0.38767161 0.6969634
 [4,] 1.5952808 -2.21469989 -1.98935170 -0.05380504 0.5566632
 [5,] 0.3295078 1.12493092 0.61982575 -1.37705956 -0.6887557
 [6,] -0.8204684 -0.04493361 -0.05612874 -0.41499456 -0.7074952
 [7,] 0.4874291 -0.01619026 -0.15579551 -0.39428995 0.3645820
 [8,] 0.7383247 0.94383621 -1.47075238 -0.05931340 0.7685329
 [9,] 0.5757814 0.82122120 -0.47815006 1.10002537 -0.1123462
[10,] -0.3053884 0.59390132 0.41794156 0.76317575 0.8811077

#calculate mean of each sample
colMeans(data)

[1] 0.1322028 0.2488450 -0.1336732 0.1207302 0.1341367

Из вывода мы видим:

  • Среднее значение первого образца равно 0,1322 .
  • Среднее значение второго образца равно 0,2488 .
  • Среднее значение третьего образца равно -0,1337 .

И так далее.

Дополнительные ресурсы

Как выбрать определенные столбцы в R
Как удалить столбцы из фрейма данных в R
Как удалить строки из фрейма данных на основе условия в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.