You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从tibble单元格提取不定长列表元素并生成唯一向量?

提取列表列元素并生成唯一排序向量的解决方法

嘿,你已经完成了最关键的拆分步骤啦,剩下的操作其实很简单,几步就能得到你想要的final向量。

假设你用tibble::enframe(res)得到的那个包含列表列的tibble叫做genre_tbl,直接用下面的代码就能搞定:

# 把value列里的所有列表元素展开成一维向量
all_genres <- unlist(genre_tbl$value)
# 去重+排序得到最终结果
final <- sort(unique(all_genres))

运行之后,final就会输出你想要的排序好的唯一电影类型:

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

用tidyverse链式写法更流畅

如果你习惯用tidyverse的风格,可以把整个流程串起来,不用单独存中间变量:

library(tibble)
library(dplyr)

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

final <- test %>%
  sapply(function(x) unlist(strsplit(x, "\\|"))) %>%
  enframe() %>%
  pull(value) %>%  # 提取出存着类型列表的value列
  unlist() %>%     # 把嵌套列表展开成普通字符向量
  unique() %>%     # 剔除重复的类型
  sort()           # 按字母顺序排序

简单解释下每一步

  • pull(value):把tibble里的value列单独提取出来,得到一个包含多个子列表的列表对象;
  • unlist():把所有子列表里的元素全部拉出来,变成一个一维的字符向量;
  • unique():自动去掉重复出现的电影类型;
  • sort():按字母顺序给类型排序,和你给出的目标结果完全匹配。

要是你不需要排序的话,去掉sort()就行,不过看你想要的结果是排好序的,所以加上这个步骤刚好。

内容的提问来源于stack exchange,提问作者SkyWalker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:31:13