【问题标题】:How to extract variable-number elements list from a tibble cell?如何从 tibble 单元格中提取可变数元素列表?
【发布时间】:2019-11-09 00:31:34
【问题描述】:

我有一个看不见的用例 :) 我有以下电影类型组合列表:

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"

【问题讨论】:

    标签: r dplyr tidyverse


    【解决方案1】:

    来自test 你可以这样做:

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

    或者来自你的小标题:

    library(dplyr)
    library(purrr)
    
    df <- tibble::enframe(res)
    
    df %>%
      pull(value) %>%
      flatten_chr() %>%
      unique()
    

    【讨论】:

      【解决方案2】:

      从 tibble 开始的不同选项是使用 unnest:

      tibble::enframe(res) %>% unnest(value) %>% pull(value) %>% unique
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-06
        • 1970-01-01
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多