Как извлечь список элементов с переменным числом из ячейки таблицы? - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть невидимый сценарий использования :) У меня есть следующий список комбинаций жанров фильмов:

test <- c("Comedy|Romance", 
          "Action|Crime|Thriller", 
          "Action|Adventure|Drama|Sci-Fi")

Я разработал разбиение каждого элемента на список следующим образом:

res <- sapply(test, function(x) {
    unlist(strsplit(x, "\\|"))
})
tibble::enframe(res)
# A tibble: 3 x 2
name                            value    
<chr>                           <list>   
1 Comedy|Romance                <chr [2]>
2 Action|Crime|Thriller         <chr [3]>
3 Action|Adventure|Drama|Sci-Fi <chr [4]>

Но потом я получаю элементы вектора с переменным числом в ячейке значения, которые я не знаю, как извлечь в один вектор. Как мы можем извлечь эти элементы списка в уникальный конечный результат?

final
[1] "Action" "Adventure" "Comedy" "Crime" "Drama" "Romance" "Sci-Fi" "Thriller"

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

Другая опция, начинающаяся с тиббла, заключается в использовании unnest:

tibble::enframe(res) %>% unnest(value) %>% pull(value) %>% unique
1 голос
/ 09 ноября 2019

С test вы можете сделать:

unique(unlist(strsplit(test, "\\|")))

Или с вашего стола:

library(dplyr)
library(purrr)

df <- tibble::enframe(res)

df %>%
  pull(value) %>%
  flatten_chr() %>%
  unique()
...