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

R语言按总字符数阈值拆分字符向量的实现方法

R语言字符向量按总字符数阈值拆分实现方案

实现逻辑

采用顺序贪心累加规则:逐个遍历字符向量元素,累加当前分组的总字符数,若加入下一个元素后总字符数超过阈值100,则将当前分组封存,开启新分组继续累加,保证所有分组总字符数均小于100,同时完全保留原向量的元素顺序,匹配你需要的拆分规则。

完整实现代码

# 原始字符向量
text <- c(
  "My test",
  "Test2",
  "Tests",
  "Dolphin Sentimental S.r.l.", "Tiger Sentiyapa S.r.l.", 
  "Effort rate calculates to grant (Debt to Income Rate)", 
  "Amount of pensions received mens.", 
  "(Grant data) (Pension Received (Monthly Basis))", 
  "Effort rate calculates to grant (Debt to Income Rate)", 
  "Amount of pensions received mens.", 
  "(Grant data) (Pension Received (Monthly Basis))"
)

# 计算每个元素的字符数
char_counts <- nchar(text, na.rm = TRUE)
# 设定单组最大总字符数阈值
max_total <- 100

# 初始化分组参数
current_total <- 0
group_no <- 1
group_label <- integer(length(text))

# 遍历分配分组编号
for (i in seq_along(text)) {
  # 加入当前元素后超过阈值则开启新组
  if (current_total + char_counts[i] >= max_total) {
    group_no <- group_no + 1
    current_total <- 0
  }
  current_total <- current_total + char_counts[i]
  group_label[i] <- group_no
}

# 拆分得到分组列表,每个子元素就是符合要求的字符向量
split_result <- split(text, group_label)

结果使用说明

  • 验证分组字符数:运行lapply(split_result, \(x) sum(nchar(x)))可确认所有分组总字符数均小于100
  • 提取对应分组:前5个元素对应split_result[[1]],第6、7个元素对应split_result[[2]],后续分组以此类推直接取下标即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 18:51:02