如何在R数据框列中提取唯一词汇为列表?求简便优雅的实现方法
简单提取数据框列中唯一词汇的方法
当然有更简单的办法!完全没必要动用tm包来做这么基础的操作,R原生函数和常用的tidy工具就能轻松搞定。给你分享几个最实用的方案:
最直接的原生方法:
unique()函数
这应该是最优雅的解决方案了,一行代码就能得到你想要的结果,还会保留词汇第一次出现的顺序:DF <- data.frame(slNo = 1:5, names = c("get", "free", "new", "get", "new")) list <- unique(DF$names) # 输出结果:[1] "get" "free" "new"unique()的作用就是提取向量中的唯一值,完全贴合你的需求,简洁又高效。tidyverse风格方法:
dplyr::distinct()
如果你平时习惯用tidyverse系列工具,用distinct()配合pull()也很顺手,代码可读性强:library(dplyr) list <- DF %>% distinct(names) %>% # 筛选出names列的唯一行 pull(names) # 将列转换为向量这个方法在处理更复杂的数据框操作时扩展性更好,比如后续还要做其他数据清洗的话,能无缝衔接。
补充:若不在意顺序可用
factor()
如果你对词汇的顺序没有要求,也可以先把列转为因子再提取水平值,不过结果会按字母排序:list <- levels(factor(DF$names)) # 输出结果:[1] "free" "get" "new"
总之,最推荐用unique(),完全满足你的需求,零额外依赖,代码极简。
内容的提问来源于stack exchange,提问作者Raghavan vmvs
相关产品推荐
相关产品推荐

