R两个函数rep()和replicate()的区别

R两个函数rep()和replicate()的区别

这是一个自己实践过程中发现的区别。有这样一个实际需求,我需要从符合指数分布的随机数中随机选择两个数,然后从小到大排序,然后我需要这样排好序的随机数对10个。于是自然我想到了重复函数rep(),如下:

x<-rep(sort(sample(rexp(50, 2), 2)), 10)
##  [1] 0.2384025 1.4215118 0.2384025 1.4215118 0.2384025 1.4215118 0.2384025
##  [8] 1.4215118 0.2384025 1.4215118 0.2384025 1.4215118 0.2384025 1.4215118
## [15] 0.2384025 1.4215118 0.2384025 1.4215118 0.2384025 1.4215118

很显然,结果并不是我想要的。因为这只是sampling了一次,然后重复这次sampling。于是google了一下,发现可以用replicate()函数,如下:

x<-replicate(10, sort(sample(rexp(50,2),2)))
##           [,1]       [,2]       [,3]       [,4]      [,5]     [,6]
## [1,] 0.2669552 0.06142423 0.04436058 0.02837729 0.1421537 0.748266
## [2,] 0.7929953 0.21013391 1.25225690 0.87045588 0.6538525 1.844801
##           [,7]      [,8]      [,9]     [,10]
## [1,] 0.1733727 0.2130082 0.1885610 0.1896672
## [2,] 1.0095295 0.3667277 0.4232648 0.7383755

这样便达到了目的,即重复取样10次,从而也看出两个函数的区别。同时,后者生成的是矩阵形式而非向量形式,便于元素操作。最后列出这两个函数的基本使用参数:

rep(vector, times, length.out, each=integer, ...)
replicate(times, vector)

除非特别声明,文章均为牛会飞的博客原创,遵循署名-非商业使用-相同方式共享授权协议
转载请注明出处: https://blogfei.com/the-difference-of-rep-and-replicate-in-r/

暂无评论