Q:

mapping and left_joining two lists together

I am trying to join two lists together. I would like to use left_join since I know it but it doesn't work.
I have tried mapping both of the following but cannot seem to get it working and I don't know if it is possible using the way I am doing things.
map(df2, ~left_join(., df1, by = "station"))
map(df2, ~reduce(., df1, by = "station"))

list 1 in df1 corresponds to list 2 in df2 which is why I use the map function. I would like to just join them together based on the station value. The output for one list would look like:
# A tibble: 4 x 11
  date         day month  year quarter semester weekday station        value stat  statistic
  <date>     <int> <dbl> <dbl>   <int>    <int>   <dbl> <chr>          <dbl> <chr>     <dbl>
1 2016-01-01     1     1  2016       1        1       1 c_farolillo       17 mean       21.3
2 2016-01-01     1     1  2016       1        1       1 c_farolillo       17 sd         30.0
3 2016-01-01     1     1  2016       1        1       1 plaza_eliptica    25 mean       48.6
4 2016-01-01     1     1  2016       1        1       1 plaza_eliptica    25 sd         47.1

Data:
df1 <- list(structure(list(station = c("c_farolillo", "plaza_eliptica", 
"c_farolillo", "plaza_eliptica"), stat = c("mean", "mean", "sd", 
"sd"), statistic = c(21.2942922374429, 48.5710301846855, 30.030258443028, 
47.0516928425878)), row.names = c(NA, -4L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(station = c("c_farolillo", 
"plaza_eliptica", "c_farolillo", "plaza_eliptica"), stat = c("mean", 
"mean", "sd", "sd"), statistic = c(21.2993150684932, 48.5605316914534, 
30.0286190461173, 47.0543871206842)), row.names = c(NA, -4L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(station = c("c_farolillo", 
"plaza_eliptica", "c_farolillo", "plaza_eliptica"), stat = c("mean", 
"mean", "sd", "sd"), statistic = c(21.2947488584475, 48.551889593794, 
30.0297291333284, 47.0562416513092)), row.names = c(NA, -4L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(station = c("c_farolillo", 
"plaza_eliptica", "c_farolillo", "plaza_eliptica"), stat = c("mean", 
"mean", "sd", "sd"), statistic = c(21.2778538812785, 48.5382545766386, 
30.0267943793948, 47.0607680244109)), row.names = c(NA, -4L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(station = c("c_farolillo", 
"plaza_eliptica", "c_farolillo", "plaza_eliptica"), stat = c("mean", 
"mean", "sd", "sd"), statistic = c(21.2614155251142, 48.5214531240057, 
30.0269420596686, 47.0676011750263)), row.names = c(NA, -4L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(station = c("c_farolillo", 
"plaza_eliptica", "c_farolillo", "plaza_eliptica"), stat = c("mean", 
"mean", "sd", "sd"), statistic = c(21.253196347032, 48.5055948249362, 
30.0292032528186, 47.0737183354519)), row.names = c(NA, -4L), class = c("tbl_df", 
"tbl", "data.frame")))

df2 <- list(structure(list(date = structure(c(16801, 16801), class = "Date"), 
    day = c(1L, 1L), month = c(1, 1), year = c(2016, 2016), quarter = c(1L, 
    1L), semester = c(1L, 1L), weekday = c(1, 1), station = c("c_farolillo", 
    "plaza_eliptica"), value = c(17, 25)), row.names = c(NA, 
-2L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
    date = structure(c(16802, 16802), class = "Date"), day = c(2L, 
    2L), month = c(1, 1), year = c(2016, 2016), quarter = c(1L, 
    1L), semester = c(1L, 1L), weekday = c(0, 0), station = c("c_farolillo", 
    "plaza_eliptica"), value = c(9, 29)), row.names = c(NA, -2L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
    date = structure(c(16803, 16803), class = "Date"), day = c(3L, 
    3L), month = c(1, 1), year = c(2016, 2016), quarter = c(1L, 
    1L), semester = c(1L, 1L), weekday = c(0, 0), station = c("c_farolillo", 
    "plaza_eliptica"), value = c(8, 18)), row.names = c(NA, -2L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
    date = structure(c(16804, 16804), class = "Date"), day = c(4L, 
    4L), month = c(1, 1), year = c(2016, 2016), quarter = c(1L, 
    1L), semester = c(1L, 1L), weekday = c(1, 1), station = c("c_farolillo", 
    "plaza_eliptica"), value = c(3, 11)), row.names = c(NA, -2L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
    date = structure(c(16805, 16805), class = "Date"), day = c(5L, 
    5L), month = c(1, 1), year = c(2016, 2016), quarter = c(1L, 
    1L), semester = c(1L, 1L), weekday = c(1, 1), station = c("c_farolillo", 
    "plaza_eliptica"), value = c(4, 13)), row.names = c(NA, -2L
), class = c("tbl_df", "tbl", "data.frame")), structure(list(
    date = structure(c(16806, 16806), class = "Date"), day = c(6L, 
    6L), month = c(1, 1), year = c(2016, 2016), quarter = c(1L, 
    1L), semester = c(1L, 1L), weekday = c(0, 0), station = c("c_farolillo", 
    "plaza_eliptica"), value = c(4, 9)), row.names = c(NA, -2L
), class = c("tbl_df", "tbl", "data.frame")))

A:

Instead of map, we can use map2, which takes two objects as input instead of one in map
library(purrr)
library(dplyr)
map2(df2, df1, left_join, by = 'station')
#[[1]]
# A tibble: 4 x 11
#  date         day month  year quarter semester weekday station        value stat  statistic
#  <date>     <int> <dbl> <dbl>   <int>    <int>   <dbl> <chr>          <dbl> <chr>     <dbl>
#1 2016-01-01     1     1  2016       1        1       1 c_farolillo       17 mean       21.3
#2 2016-01-01     1     1  2016       1        1       1 c_farolillo       17 sd         30.0
#3 2016-01-01     1     1  2016       1        1       1 plaza_eliptica    25 mean       48.6
#4 2016-01-01     1     1  2016       1        1       1 plaza_eliptica    25 sd         47.1

#[[2]]
#...

In base R, this can be done with Map
Map(merge, df2, df1, MoreArgs = list(by = 'station', all.x = TRUE))

