【发布时间】:2020-05-27 02:56:22
【问题描述】:
当我教人们如何使用 dplyr 时,我警告他们不要假设任何 dplyr 函数都会保留其数据帧/小标题的顺序,除非文档另有说明。但是,我还没有找到任何关于此事的官方文档,这使得说服人们在假设他们的代码在做什么时应该更加小心变得更加困难。例如,mutate() 明确保证 number 行将被保留,但没有说明订单保留。是否有任何与 dplyr(或 tidyverse)相关的官方声明或文档,如果有的话,可以对函数中的行顺序保留做出哪些假设,我可以向人们指出这些假设?
【问题讨论】:
-
据我所知,
mutate保留了顺序,但summarise没有,它按递增顺序排序。 -
我也会在 RStudio Tidyverse 论坛上发布此内容:community.rstudio.com/c/tidyverse/6
-
我可以清楚地看到 Tidyverse 通常应该保持秩序。看看最近的bug fix where one of the functions didn't、this test 或者实际上是几个明确声明它改变顺序的函数。但我不确定这个隐含的规则是否反映在任何明确的原则中。
-
你有你想不保持顺序的函数的例子吗?
-
@JBGruber 有趣的是,与您链接的测试相关联的issue 准确地说明了为什么这很重要。有人做出了关于订单被保留的假设,而开发人员没有,然后包中的更改破坏了基于所述假设的脆弱代码。这只是14个月前。巧合的是,该问题关闭前的最后一条评论引发了与我在这里完全相同的担忧(没有回应)。