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

如何用R语言识别并合并被空字符串分隔的连续字符串块?

解决方案

要实现合并被空字符串分隔的连续非空字符串块,你可以利用分组聚合的思路,通过cumsum生成分组标识,再按组合并字符串,具体代码如下:

# 输入向量
x1 <- c("hello","c1","","","hello","c2","3","","hello","","c1","c2","")

# 生成分组标识:每遇到空字符串,分组编号递增
grp <- cumsum(x1 == "")
# 筛选非空元素及其对应的分组
non_empty_vals <- x1[x1 != ""]
non_empty_grps <- grp[x1 != ""]
# 按分组合并字符串,用空格连接
merged_result <- tapply(non_empty_vals, non_empty_grps, paste, collapse = " ")
# 去除分组名称,转为纯向量
merged_result <- unname(merged_result)

# 查看结果
merged_result

运行后输出与期望完全一致:

[1] "hello c1"     "hello c2 3"   "hello"        "c1 c2"

原有代码问题分析

你之前的for循环方案存在两个核心问题:

  1. 重复处理元素:循环中每次只对比当前索引和下一个索引,导致相邻元素会被多次合并(比如"c1"既会和"hello"合并,又会被单独输出),产生重复项。
  2. 无法处理多元素连续块:代码仅考虑了两个相邻元素的情况,当连续非空元素超过2个时(比如"hello","c2","3"),无法一次性合并整个块,只能两两合并后再单独输出最后一个元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:25:03