dplyr::inner_连接顺序保持吗?

dplyr::inner_连接顺序保持吗?,r,dplyr,R,Dplyr,下面的代码使dplyr::internal_join看起来保持了第一个数据帧的顺序。然而,我不能从这是否是保证。它是?有裁判吗 library(dplyr) df1 <- data.frame(num=c(2,1), val1=c('b', 'a')) df2 <- data.frame(num=c(1,2), val2=c('c', 'd')) > df1 %>% inner_join(df2, by=c('num')) num val1 val2 1 2

下面的代码使dplyr::internal_join看起来保持了第一个数据帧的顺序。然而,我不能从这是否是保证。它是?有裁判吗

library(dplyr)

df1 <- data.frame(num=c(2,1), val1=c('b', 'a'))
df2 <- data.frame(num=c(1,2), val2=c('c', 'd'))

> df1 %>% inner_join(df2, by=c('num'))
  num val1 val2
1   2    b    d
2   1    a    c
库(dplyr)
df1%内部联接(df2,by=c('num'))
num val1 val2
1 2 b d
2 1 a c

我想你是在寻找数学上的“证明”(可以这么说)来证明顺序是明确/有意保留的,或者是数学上的断言,即顺序不一定被保留。如果您在这里没有得到足够的响应,可能需要提出一个问题,以便从
*\u join
作者那里获得规范的答案。缺少那。。。我会像对待大多数SQL查询/联接一样对待它,除非您在SQL中指定
orderby
,或者在dplyr中指定
arrange
,否则无法保证顺序。(这就是我对待它的方式,尽管我不记得在Hadley的
left_join
上看到第一帧顺序的变化:“
dplyr
[join]版本相对于
merge
的优点是[…]行保持现有顺序”。但再一次,“保证”听起来像谷歌集团表达的意图是为了保持秩序,但文档本身没有承诺,所以我不应该依赖它。如果有人把它作为一个答案,我会接受的。我想你是在寻找数学上的“证据”(可以这么说),证明顺序是明确/有意保留的,或者数学上的断言,证明它不一定被保留。如果您在这里没有得到足够的响应,可能需要提出一个问题,以便从
*\u join
作者那里获得规范的答案。缺少那。。。我会像对待大多数SQL查询/联接一样对待它,除非您在SQL中指定
orderby
,或者在dplyr中指定
arrange
,否则无法保证顺序。(这就是我对待它的方式,尽管我不记得在Hadley的
left_join
上看到第一帧顺序的变化:“
dplyr
[join]版本相对于
merge
的优点是[…]行保持现有顺序”。但再一次,“保证”听起来像谷歌集团表达的意图是为了保持秩序,但文档本身没有承诺,所以我不应该依赖它。如果有人把它作为回答,我会接受的。