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

R如何编写函数将含指定前缀的字符向量拆分为前缀与剩余子串

R语言指定前缀拆分函数实现

base R 无依赖实现

无需安装额外第三方包,直接在原生R环境中运行:

split_by_prefix <- function(input_vec, target_prefix) {
  # 构造匹配规则:仅匹配开头为指定前缀的字符串
  match_pattern <- paste0("^(", target_prefix, ")(.*)$")
  # 执行正则匹配
  match_result <- regexec(match_pattern, input_vec)
  extract_content <- regmatches(input_vec, match_result)
  
  # 生成前缀向量和剩余内容向量
  prefix_vec <- sapply(extract_content, function(item) {
    if (length(item) == 3) item[2] else ""
  })
  suffix_vec <- sapply(extract_content, function(item) {
    if (length(item) == 3) item[3] else item[1]
  })
  
  return(list(prefix = prefix_vec, suffix = suffix_vec))
}

调用测试

# 输入向量
id <- c("A01A01", "A01B01", "A01C01", "R", "S", "T")
# 传入参数,指定匹配前缀为A01
output <- split_by_prefix(id, "A01")
# 提取结果
a <- output$prefix
b <- output$suffix

运行后得到的a和b与需求的预期输出完全一致。

可选:stringr 简化实现

如果项目中已经使用tidyverse生态,可使用stringr包简化代码:

library(stringr)
split_by_prefix <- function(input_vec, target_prefix) {
  match_pattern <- paste0("^(", target_prefix, ")(.*)$")
  match_mat <- str_match(input_vec, match_pattern)
  prefix_vec <- ifelse(is.na(match_mat[,2]), "", match_mat[,2])
  suffix_vec <- ifelse(is.na(match_mat[,2]), input_vec, match_mat[,3])
  return(list(prefix = prefix_vec, suffix = suffix_vec))
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:54:06