Мы можем преобразовать элементы list
в tibble
, пройдя по list
с помощью map
и изменив его на один data.frame
library(tidyverse)
map_dfr(bffrsTbls, ~ .x %>%
as.list %>%
as_tibble)
Если нам также понадобятся все комбинации, enframe
элементы list
для таблицы с двумя столбцами и spread
выходного набора данных в расширенном формате
bffrsTbls %>%
map_df(enframe, .id = 'ListElmnt') %>%
mutate(name = factor(paste0('val', name), levels = paste0("val", 1:5))) %>%
spread(name, value, drop = FALSE)
# A tibble: 3 x 6
# ListElmnt val1 val2 val3 val4 val5
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 1 NA 711 NA NA 1781
#2 2 NA 1168 NA NA 1530
#3 3 390 471 904 NA 1237
Или используя base R
xtabs(values ~ ListElmnt + ind, do.call(rbind, Map(cbind,
lapply(bffrsTbls, stack), ListElmnt = seq_along(bffrsTbls))))
данные
bffrsTbls <- list(structure(c(`2` = 711, `5` = 1781), .Dim = 2L, .Dimnames = list(
c("2", "5")), class = "table"), structure(c(`2` = 1168, `5` = 1530
), .Dim = 2L, .Dimnames = list(c("2", "5")), class = "table"),
structure(c(`1` = 390, `2` = 471, `3` = 904, `5` = 1237), .Dim = 4L,
.Dimnames = list(
c("1", "2", "3", "5")), class = "table"))