从
semi_join
的定义来看,我认为它本质上是结合的?不知道是不是那个不热衷于理解的人...
library(dplyr)
set.seed(100)
x1 <- tibble(
id = floor(runif(100, 10, 1000))
)
set.seed(20)
x2 <- tibble(
id = floor(runif(100, 10, 1000))
)
x1 |> semi_join(x2) |> arrange(id)
x2 |> semi_join(x1) |> arrange(id)
反转
semi_join
(旨在返回 x 中与 y 匹配的所有行)可能不会给出与此处所示相同的结果:
library(dplyr)
df1 <- tibble(x = c(1, 2, 3, 2))
df2 <- tibble(x = c(2, 3, 4, 4))
semi_join(df1, df2) # 3 rows from df1 match df2
#> Joining with `by = join_by(x)`
#> # A tibble: 3 × 1
#> x
#> <dbl>
#> 1 2
#> 2 3
#> 3 2
semi_join(df2, df1) # 2 rows from df2 match df1
#> Joining with `by = join_by(x)`
#> # A tibble: 2 × 1
#> x
#> <dbl>
#> 1 2
#> 2 3
创建于 2024-04-24,使用 reprex v2.1.0