R replicate() 函数教程

本文介绍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))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值