在 R dplyr 中将每一行连接到整个第二 table

join each row to the whole second table in R dplyr

我有两个 table:

table 1:
|   | a  | b  |
|---|----|----|
| 1 | a1 | b1 |
| 2 | a2 | b2 |

table 2: 
|   | c  | d  |
|---|----|----|
| 1 | c1 | d1 |
| 2 | c2 | d2 |

我想以一种方式加入它们,即 table 的每一行与 table 两行按列绑定以获得此结果:

|   | a  | b  | c  | d  |
|---|----|----|----|----|
| 1 | a1 | b1 | c1 | d1 |
| 2 | a1 | b1 | c2 | d2 |
| 3 | a2 | b2 | c1 | d1 |
| 4 | a2 | b2 | c2 | d2 |

我觉得这是一个重复的问题,但我找不到正确的措辞和搜索词来找到答案。

我找到了一个粗略的答案:

table1$key <- 1
table2$key <- 1
result <- left_join(table1,table2, by="key") %>%
              select(-key)

非常感谢任何更好的答案。

不用加入,我们可以用tidyr::expand_grid:

library(dplyr)
library(tidyr)

table1 <- tibble(a = c("a1", "a2"),
                 b = c("b1", "b2"))

table2 <- tibble(c = c("c1","c2"),
                 d = c("d1", "d2"))

expand_grid(table1, table2)
#> # A tibble: 4 x 4
#>   a     b     c     d    
#>   <chr> <chr> <chr> <chr>
#> 1 a1    b1    c1    d1   
#> 2 a1    b1    c2    d2   
#> 3 a2    b2    c1    d1   
#> 4 a2    b2    c2    d2

reprex package (v2.0.1)

于 2021-09-17 创建