当我教人们如何使用dplyr时,我警告他们不要假设任何dplyr函数将保留其数据帧/小节的顺序,除非文档另有说明。但是,我找不到有关此事的任何正式文档,这使说服人们相信他们在假设自己的代码正在做时应格外小心,这更加困难。例如,mutate()明确保证将保留行的 number ,但未提及任何有关订单保留的内容。是否有任何与dplyr(或tidyverse)相关的官方声明或文档,关于我可以指出的功能中关于行顺序保存的假设(如果有的话)?
答案 0 :(得分:1)
这来自mutate
source code:
对于
mutate()
:
行不受影响。
除非明确修改,否则将保留现有列。
新列将添加到现有列的右侧。
给定值为
NULL
的列将被删除如果分组变量发生突变,则将重新计算组。数据框属性被保留。
对于
transmute()
:
行不受影响。
除对变量分组外,除非明确保留,否则将删除现有列。
列顺序与表达式的顺序匹配。
如果分组变量发生突变,则将重新计算组。
数据框属性被保留。
我将其解释为保留行顺序。由于它来自源代码,因此将其视为规范。