R 中的 rep():解码复制函数
已发表: 2020-06-15在我们谈论R 中的 rep之前,我们必须知道迭代是什么。 术语迭代意味着重复。 与大多数其他编程语言一样,传统的循环或迭代是 R 的核心方面。
虽然常规循环是一种有效的数据管理方法,但它们的成本很高,唯一的原因是迭代是内存和耗时的。 一个很好的替代方法是使用可以实现与迭代相同目标的向量化方法; rep() 函数是这样一个矢量化循环函数的成员。
目录
什么是 rep() 函数?
简单来说, R中的 rep 或 rep() 函数将数值、文本或向量的值复制特定次数。 rep() 函数是 R 基础包的 apply() 系列函数的成员。 apply() 系列包含用于重复操作来自数组、矩阵、数据框和列表的数据的函数。
apply() 函数避免使用循环构造来作用于数组、矩阵或输入列表,并应用带有可选参数的命名函数。 被调用的函数可以是聚合函数、变换函数或向量化函数,例如数组、向量、列表和矩阵。 查看我们的数据科学课程以了解有关函数的更多信息。
阅读更多: Python 中的数据帧:Python 深入教程
矢量化计算与迭代
向量化方法不是对序列的单个元素进行操作,而是同时对所有向量分量进行操作。 因此,矢量化计算总是能获得更快的结果。
为了说明向量化计算的速度,我们将使用一个示例来确定 for() 循环生成大向量所用的时间。 在该示例中,每个元素按从 1 到 N(其中 N = 10,000,000)的增量累积总和顺序计算。 通过速度测试在 for() 循环迭代和矢量化函数之间进行了比较。
资源
在比较速度测试的结果时,很明显矢量化计算(速度测试 2)所用的时间明显快于 for() 循环。 在迭代循环一次的时间内,向量化计算可以重复278次。
重复与复制功能
当我们想要重复执行相同的代码块直到满足特定条件时,使用 R 中的重复函数或循环。 它与重复执行命令块直到中断的 for 和 while 循环非常相似。 创建重复循环的基本语法是:
重复 {
如果(条件){
休息
}
}
以下示例将阐明重复功能的使用:
在上面的示例中,重复循环对值求和,直到达到 6。一旦循环达到 6,循环通过打印“重复循环结束”而中断。
另一方面,R 中的复制函数或 rep 用于复制值。 使用 rep() 函数的基本 R 语法是:
- 代表(值,number_of_times)
- 代表(序列,每个,number_of_times)
下面是一些理解 rep() 函数的例子:
示例:使用 rep() 函数将值复制特定次数

在上面的示例中,值 2 重复了十次。
示例:使用具有长度属性的 rep() 函数
在上面的示例中,按顺序打印 1 到 4,直到元素数量达到 20。
示例:使用 rep() 函数复制列表
在上面的例子中,从 1 到 5 的评分列表重复了三次。
资源
使用 rep() 函数扩展向量
rep() 函数是一种重复向量的灵活方式。 以下是更多示例:
如果我们需要将实验/观察单位的统计向量扩展为具有重复观察单位的数据框的向量,则每个参数都非常方便。 例子:
rep() 的另一个特性是,通过将长度参数替换为指定向量中每个元素将重复的次数的向量,向量可以扩展为不平衡面板。 例子:
rep 函数的更简单和更快的版本包括 rep_len() 和 rep.int()。 这些较新的版本没有 rep() 的某些属性,但在速度是原始的并且重复向量的额外方面不受欢迎的情况下证明是有用的。
资源
阅读: 6 个适合初学者的有趣 R 项目创意
结论
在本文中,我们通过合适的示例讨论了重复和复制功能。 虽然传统的迭代对于重复执行代码块很有用,但R 中的 rep非常适合复制向量或列表的值。 高效省时,rep() 函数简化了向量复制!
如果您想了解 R(数据科学),请查看 IIIT-B 和 upGrad 的数据科学执行 PG 计划,该计划是为在职专业人士创建的,并提供 10 多个案例研究和项目、实用的实践研讨会、与行业专家的指导,与行业导师一对一,400 多个小时的学习和顶级公司的工作协助。
如何在 R 中创建具有重复值的向量?
R 中的 rep() 函数可用于重复一系列整数。 在 R 中,有两种技术可以创建具有重复值的向量; 第一种方法重复向量中的每个元素,而第二种方法将元素重复给定次数。 在每种方法中,向量都是使用 rep 函数创建的。 例如,rep(1:5, times=5) 给出一个序列 1 到 5 重复 5 次的向量。
哪个函数更快——复制还是循环?
在 R 编程语言中,For 循环函数比复制函数更快。 for 循环是一种通过为列表中的每个值运行代码来循环使用各种编程语言的值列表的技术。 rep() 是一个矢量化循环函数,其唯一目的是在不浪费内存的情况下运行。 当您需要更改现有数据框的一部分时,For 循环通常是最佳选择。
如何加快 R 代码的速度?
下面列出了一些加速 R 代码的方法:-
1. 在将数据结构和输出变量放入循环进行计算之前,请确保它们的长度和数据类型正确。 在循环内部,尽量不要逐步扩大数据量。
2. 如果可能,使用矩阵而不是数据框,因为数据框在许多情况下会产生问题。 因此,仅在绝对必要时才使用数据帧。
3. 尽可能使用向量和矩阵运算。
4. 在 R 中,不要更改对象的类型或大小。 更改 R 对象的类型和大小会导致它重新分配内存空间,这在默认情况下是不够的。