Похоже, на это должен быть простой ответ, но я не смог его найти:
tib1 <- tibble(x = list(1, 2, 3), y = list(4, 5, 6))
tib1
# A tibble: 3 × 2
x y
<list> <list>
1 <dbl [1]> <dbl [1]>
2 <dbl [1]> <dbl [1]>
3 <dbl [1]> <dbl [1]>
tib2 <- tibble(x = list(1, 2, 4, 5), y = list(4, c(5, 10), 6, 7))
tib2
# A tibble: 4 × 2
x y
<list> <list>
1 <dbl [1]> <dbl [1]>
2 <dbl [1]> <dbl [2]>
3 <dbl [1]> <dbl [1]>
4 <dbl [1]> <dbl [1]>
dplyr::inner_join(tib1, tib2)
Присоединение, by = c ("x", "y")
Ошибка в inner_join_impl (x, y, by $ x, by $ y, суффикс $ x, суффикс $ y): невозможно присоединиться к 'x' x 'x' из-за несовместимых типов (список / список)
Итак, есть ли способ выполнить соединение на основе столбцов list (прежде чем я начну писать свои собственные)?
В основном, если список обеих ключевых переменных идентичен, я хочу, чтобы строка была включена в итоговую таблицу, а если нет - нет. В приведенном выше примере есть две ключевые переменные x
и y
, и результатом должна быть только первая строка из двух tibble
, поскольку она единственная идентичная в обеих ключевых переменных:
tibble(x = list(1), y = list(4))
# A tibble: 1 × 2
x y
<list> <list>
1 <dbl [1]> <dbl [1]>