У меня есть следующая табличка с двумя вложенными столбцами:
library(tidyverse)
df <- structure(list(a = list(c("a", "b"), "c"), b = list(c("1", "2",
"3"), "3"), c = c(11, 22)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -2L))
Что производит:
# A tibble: 2 x 3
a b c
<list> <list> <dbl>
1 <chr [2]> <chr [3]> 11
2 <chr [1]> <chr [1]> 22
Как я могу разложить их сразу, создав один тиббл?
Я пробовал это, но не удалось:
> df %>% unnest(a, b)
Error: All nested columns must have the same number of elements.
Вероятно, есть более чистый способ сделать это, но если вам нужен декартовый продукт для столбцов, вы можете разложить их последовательно, если ничего другого:
> df %>%
unnest(a, .drop = FALSE) %>%
unnest(b, .drop = FALSE)
# # A tibble: 7 x 3
# c a b
# <dbl> <chr> <chr>
# 1 11 a 1
# 2 11 a 2
# 3 11 a 3
# 4 11 b 1
# 5 11 b 2
# 6 11 b 3
# 7 22 c 3
Как написать общую функцию (без каналов) для многих столбцов?