You need to enable JavaScript to run this app. R dplyr工作流中用正则替换字符串括号内非数字字符的方法
优惠活动
大模型
产品
解决方案
定价
更多

R dplyr工作流中用正则替换字符串括号内非数字字符的方法

实现方案

你可以结合dplyr和purrr处理列表列,核心逻辑是识别括号区间,合并区间内的数字后替换原区间内容,完整代码如下:

首先加载依赖包:

library(dplyr)
library(purrr)

数据处理代码:

df <- df %>%
  mutate(x = map(x, function(vec) {
    # 识别左、右括号的位置
    left_pos <- which(vec == "(")
    right_pos <- which(vec == ")")
    # 无括号直接返回原向量
    if (length(left_pos) == 0 || length(right_pos) == 0) return(vec)
    # 匹配第一个左括号对应的最近右括号
    pair_right <- right_pos[right_pos > left_pos[1]][1]
    # 提取括号内数字拼接为字符串
    num_combined <- paste0(vec[(left_pos[1]+1):(pair_right-1)], collapse = "")
    # 替换原括号区间为拼接后的数字
    c(vec[1:(left_pos[1]-1)], num_combined, vec[(pair_right+1):length(vec)])
  }))

结果验证

将处理后的x列转为字符串打印,可确认符合预期输出:

df %>% mutate(x_str = map_chr(x, paste, collapse = ", ")) %>% pull(x_str)

输出结果:

[1] "0, 1, 0, 0, 0, 0, 0, 0, 0"     "10, 1, 1, 4, 0, 0, 0, 6, x, )"
[3] "0, 0, 2, 2, 0, 0, 0, 1, 0"     "0, 0, 0, 0, 0, 11, 0, 1, x"   
[5] "3, 1, 1, 2, 0, 0" 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:12:02