R语言如何提取向量中重复出现指定次数的元素
R 提取向量中出现指定次数元素的实现方案
R 基础库没有内置直接实现该需求的专属函数,但通过基础函数组合可以非常简单地达成目标,你可以直接封装为自定义函数调用。
你给出的示例向量为:col.vector = c(1, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5)
要求n=3时返回c(3,4),以下是两种常用实现:
方法1:Base R 实现(无需安装第三方包)
# 封装为可直接调用的通用函数,支持所有向量类型 get_occur_n <- function(x, n) { # 计算每个元素的出现频率 freq <- table(x) # 筛选频率等于n的元素,保留原数据类型返回 target_vals <- names(freq[freq == n]) x[match(target_vals, x)] } # 测试调用 get_occur_n(col.vector, 3) # 输出结果:[1] 3 4
方法2:tidyverse 生态实现(适配dplyr用户)
如果你日常使用tidyverse系列工具,可以用dplyr语法实现:
library(dplyr) get_occur_n <- function(x, n) { tibble(val = x) %>% count(val) %>% filter(n == {{n}}) %>% pull(val) } # 测试调用 get_occur_n(col.vector, 3) # 输出结果:[1] 3 4
扩展说明
- 若需要提取出现次数大于等于n的元素,只需将代码中的
==判断替换为>=即可 - 若需要返回所有符合条件的元素实例(如n=3时返回所有3和4的全部出现项:
c(3,3,3,4,4,4)),可以用以下函数:
get_all_occur_n <- function(x, n) { freq <- table(x) x[x %in% names(freq[freq == n])] }
内容的提问来源于stack exchange,提问作者Gero
相关产品推荐
相关产品推荐

