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

anj*_*ama 6 r dplyr tidyverse

当我教人们如何使用 dplyr 时,我警告他们不要假设任何 dplyr 函数都会保留其数据帧/小标题的顺序,除非文档另有说明。但是,我还没有找到任何关于此事的官方文档,这使得说服人们在假设他们的代码正在做什么时应该更加小心变得更加困难。例如,mutate()明确保证将保留行,但没有说明关于顺序保留的任何内容。是否有任何与 dplyr(或 tidyverse)相关的官方声明或文档,如果有的话,可以对我可以指出的函数中的行顺序保留做出哪些假设?

All*_*ron 1

这是来自 Roxygenmutate 源代码中的注释:

为了mutate()

  • 行不受影响。

  • 除非显式修改,否则现有列将被保留。

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

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

  • 数据框属性被保留。

为了transmute()

  • 行不受影响。

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

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

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

  • 数据框属性被保留。

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