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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:00:00