Вот решение, использующее purrr
:
library(purrr)
map2_df(df1, df2, ~ .x %in% .y) %>%
reduce(~ .x == .y)
#[1] TRUE FALSE FALSE
Как это работает :
При первом вызове функции, map2_df(df1, df2, ~ .x %in% .y)
, создается кадр данных, который разделяеттакая же форма, как df1
, но заполнена логическими значениями, указывающими общее членство между df1
и df2
:
# A tibble: 4 x 2
Id address
<lgl> <lgl>
1 TRUE TRUE
2 TRUE FALSE
3 TRUE FALSE
Второй вызов функции, reduce(~ .x == .y)
, сворачивает каждую строку по эквивалентности и дает нашокончательный ответ:
#[1] TRUE FALSE FALSE
Выполняя построчную эквивалентность, мы гарантируем, что только значения с совпадающим значением Id
могут вернуть TRUE
.