The fact that my first answer came up short is a good example of why it can be very useful for a question asker to provide representative example data to better capture their need concretely. You can read a guide here
My simple fix, foregoes the attempt to provide a single data.frame as an answer, and is content just to stitch like tables together maintaining the higher order list.
in your case it would be 1:3 rather than the 1:2 in my example
library(tidyverse)
list_of_list_of_tables <- list( list(hm = head(mtcars),
hi = head(iris)),
list(tm = tail(mtcars),
ti = tail(iris)))
map(1:2,
~{y <- .x
map_dfr(list_of_list_of_tables,
~.[[y]])})