Опция map_dfr
library(purrr)
map_dfr(a, as_tibble, .id = 'product')
Или с bind_rows
library(dplyr)
bind_rows(a, .id = 'product')
# A tibble: 2 x 3
# sales stock product
#* <dbl> <dbl> <chr>
#1 100 50 product_1
#2 200 80 product_2
Или с использованием rbindlist
из data.table
library(data.table)
rbindlist(a, idcol = 'product')
# product sales stock
#1: product_1 100 50
#2: product_2 200 80
Или с base R
do.call(rbind, Map(cbind, lapply(a, as.data.frame), product = names(a)))