是否有明确保证dplyr操作会保留行顺序?

时间:2020-02-11 16:21:23

标签: r dplyr tidyverse

当我教人们如何使用dplyr时,我警告他们不要假设任何dplyr函数将保留其数据帧/小节的顺序,除非文档另有说明。但是,我找不到有关此事的任何正式文档,这使说服人们相信他们在假设自己的代码正在做时应格外小心,这更加困难。例如,mutate()明确保证将保留行的 number ,但未提及任何有关订单保留的内容。是否有任何与dplyr(或tidyverse)相关的官方声明或文档,关于我可以指出的功能中关于行顺序保存的假设(如果有的话)?

1 个答案:

答案 0 :(得分:1)

这来自mutate source code:

中的Roxygen注释

对于mutate()

  • 行不受影响。

  • 除非明确修改,否则将保留现有列。

  • 新列将添加到现有列的右侧。

  • 给定值为NULL的列将被删除如果分组变量发生突变,则将重新计算组。

  • 数据框属性被保留。

对于transmute()

  • 行不受影响。

  • 除对变量分组外,除非明确保留,否则将删除现有列。

  • 列顺序与表达式的顺序匹配。

  • 如果分组变量发生突变,则将重新计算组。

  • 数据框属性被保留。

我将其解释为保留行顺序。由于它来自源代码,因此将其视为规范。