dplyr::inner_连接顺序保持吗?
下面的代码使dplyr::internal_join看起来保持了第一个数据帧的顺序。然而,我不能从这是否是保证。它是?有裁判吗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
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
的优点是[…]行保持现有顺序”。但再一次,“保证”听起来像谷歌集团表达的意图是为了保持秩序,但文档本身没有承诺,所以我不应该依赖它。如果有人把它作为回答,我会接受的。