Если я правильно понимаю ваш вопрос, ваши данные выглядят так:
tibble(col1 = list(c("a", "b", "c"), NULL, NULL),
col2 = list(NULL, c("d", "e", "f"), NULL),
col3 = list(NULL, NULL, c("g", "h", "i")))
# A tibble: 3 x 3
col1 col2 col3
<list> <list> <list>
1 <chr [3]> <NULL> <NULL>
2 <NULL> <chr [3]> <NULL>
3 <NULL> <NULL> <chr [3]>
То есть что-то вроде фрейма данных или тиббла со столбцами списка, где некоторые из ячеек содержат некоторый (символьный) вектор и другие - NULL
, и вы хотите уменьшить это до одной строки только с вектором и оставить пустые значения.
Мое решение - использовать dplyr::summarise
и purrr::compact
, чтобы уменьшить строки до одного row и, чтобы избавиться от этих надоедливых NULL
s соответственно:
tibble(col1 = list(c("a", "b", "c"), NULL, NULL),
col2 = list(NULL, c("d", "e", "f"), NULL),
col3 = list(NULL, NULL, c("g", "h", "i"))) %>%
summarise_all(compact)
# A tibble: 1 x 3
col1 col2 col3
<list> <list> <list>
1 <chr [3]> <chr [3]> <chr [3]>
Отключение этого даст вам
# A tibble: 3 x 3
col1 col2 col3
<chr> <chr> <chr>
1 a d g
2 b e h
3 c f i
Примечание: это работает только до тех пор, пока у вас есть один не -null в каждом столбце.