如何移除字符串向量中的重复对,仅保留唯一元素?
解决R语言中移除所有重复元素(仅保留单次出现元素)的问题
嘿,我懂你的需求——你要的不是普通的去重(unique()做的是保留每个元素的首次出现,删掉后续重复副本),而是彻底移除所有出现过不止一次的元素,只留下那些仅出现一次的内容。
下面给你两种简单可行的方法:
方法一:用频次表筛选
先通过table()统计每个元素的出现次数,再筛选出频次为1的元素:
MyString <- c("aaa", "bbb", "ccc", "ddd", "aaa", "ddd") # 生成元素频次统计表格 element_freq <- table(MyString) # 提取频次为1的元素名称 result <- names(element_freq[element_freq == 1]) result # 输出结果:[1] "bbb" "ccc"
方法二:用两次duplicated()检查(更简洁)
duplicated()默认会标记向量中除首次出现外的重复元素,而duplicated(MyString, fromLast = TRUE)会从后往前检查,标记除最后一次出现外的重复元素。把这两个结果取或,再取反,就能精准定位到只出现一次的元素:
MyString <- c("aaa", "bbb", "ccc", "ddd", "aaa", "ddd") result <- MyString[!duplicated(MyString) & !duplicated(MyString, fromLast = TRUE)] result # 输出结果:[1] "bbb" "ccc"
两种方法都能达到你的预期效果,第二种不需要额外生成频次表,操作更直接高效~
内容的提问来源于stack exchange,提问作者Oscar Kjell
相关产品推荐
相关产品推荐

