如何用R语言对向量中的相同元素分组并生成唯一值向量?
在R中提取按首次出现顺序排列的唯一值
当然有啦!针对你这种需要从重复元素的向量中提取按原顺序排列的唯一值的需求,R里有几个简单好用的方法:
基础R原生函数:
unique()
这是最直接的解决方案,unique()函数会自动保留元素首次出现的顺序,完全匹配你的需求。举个实际例子:# 你的示例向量 x <- c("a", "a", "a", "c", "c", "c", "b", "b", "b") # 提取唯一值 unique(x) # 输出结果:"a" "c" "b"tidyverse生态工具:
dplyr::distinct()
如果你习惯用tidyverse系列包做数据处理,dplyr的distinct()函数也能实现这个效果,尤其适合在数据框操作的场景里配合使用:library(dplyr) x <- c("a", "a", "a", "c", "c", "c", "b", "b", "b") # 提取唯一值并转为向量格式 tibble(value = x) %>% distinct(value) %>% pull(value) # 输出结果:"a" "c" "b"
小提醒:如果尝试用factor()来提取水平,默认会按字母顺序排序,会打乱原向量的元素顺序,除非手动指定levels = unique(x),否则不推荐用这个方法来保留原顺序哦。
内容的提问来源于stack exchange,提问作者Adrian Smith
相关产品推荐
相关产品推荐

