Assuming the following list:
a <- data.frame(id = 1:3, x  = 1:3)
b <- data.frame(id = 3:1, y  = 4:6)
my_list <- list(a, b)
my_list
# [[1]]
#   id x
# 1  1 1
# 2  2 2
# 3  3 3
# [[2]]
#   id y
# 1  3 4
# 2  2 5
# 3  1 6
I now want to column bind the list elements into a data frame/tibble while matching the respective rows based on the id variable, i.e. the outcome should be:
# A tibble: 3 x 3
     id     x     y
  <int> <int> <int>
1     1     1     6
2     2     2     5
3     3     3     4
I know how I can do it with some pivoting, but I'm wondering if there's a smarter way of doing it and I hoped there was some binding function that simply allows for specifying an id column?
Current approach:
library(tidyverse)
my_list %>%
  bind_rows() %>%
  pivot_longer(cols = -id) %>%
  filter(!is.na(value)) %>%
  pivot_wider()
 
     
    