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

如何在R中按向量分类统计字符串中的字符数量

在R中统计字符串中指定字符组的出现次数

先明确你的字符分组和待处理字符串:

v1 <- c("R", "H", "K")  # * (asterisk sign)
v2 <- c("D", "E")       # + (plus sign)
v3 <- c("A")            # - (minus sign)

x1 <- "GMRRRARRRS"
x2 <- "KMRDFRHRAE"

下面提供两种实用的实现方式,都能生成你需要的数据框格式:

方法1:基础R原生实现

不需要额外安装包,适合追求轻量的场景:

  1. 先写一个通用统计函数,处理单个字符串:
count_char_groups <- function(target_str, char_groups) {
  # 把字符串拆成单个字符的向量
  split_chars <- strsplit(target_str, "")[[1]]
  # 对每个字符组统计匹配的数量
  sapply(char_groups, function(group) sum(split_chars %in% group))
}
  1. 整理字符组并批量处理:
# 定义字符组,同时指定最终数据框的列名
groups <- list(
  "R,H,K" = v1,
  "D,E" = v2,
  "A" = v3
)

# 把待处理字符串放到一个向量里
input_strs <- c(x1, x2)

# 批量统计并转成数据框
result_df <- as.data.frame(t(sapply(input_strs, count_char_groups, char_groups = groups)))

运行后查看结果:

result_df
#              R,H,K D,E A
# GMRRRARRRS      6    0 1
# KMRDFRHRAE      5    2 1

方法2:tidyverse工具链实现

如果日常用tidyverse,可以用更简洁的管道流写法:

library(tidyverse)

# 构造数据并统计
tibble(original_str = input_strs) %>%
  mutate(
    `R,H,K` = str_count(original_str, paste(v1, collapse = "|")),
    `D,E` = str_count(original_str, paste(v2, collapse = "|")),
    `A` = str_count(original_str, v3)
  ) %>%
  column_to_rownames("original_str")

这里用str_count配合正则表达式(把字符组用|拼接成匹配规则),直接统计每个组的出现次数,结果和基础R方法完全一致。

内容的提问来源于stack exchange,提问作者littleworth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:25:25