Skip to main content
 首页 » 编程设计

R语言replicate() 函数教程

2022年07月19日216haluo1

本文介绍R replicate() 函数,并通过几个示例介绍其用法。

1. 语法说明

replicate函数可以重复指定次数执行表达式。
语法如下:

replicate(n, expr)

  • n : 重复执行次数
  • expr: 待执行表达式

2. 函数示例

示例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函数指定次数:

#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 

结果为矩阵,三行4列。当然也可以执行5次,生成三行5列矩阵。

3. 函数应用

使用replicate生成数据

replicate函数对于运行模式实验特别有用。举例,我们要生成5个样本,其中每个样本包括10个符合正太分布的数据。

#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。

使用replicate模拟实验

再来一个示例,模拟挣骰子实验,

# 模拟挣骰子, 
# 抽样函数,从1~6点中进行有放回抽样,每次抽1一个 
# sample(1:6,1,replace=TRUE) 
hist(replicate(10000,sample(1:6,1,replace=TRUE)),breaks = c(0:6)) 
 

在这里插入图片描述


本文参考链接:https://blog.csdn.net/neweastsun/article/details/120809490
阅读延展