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

如何编写R函数提取str_split()分割结果中指定位置的后续元素?

解决方案

通用可复用函数实现

基于tidyverse生态封装的通用分割提取函数,支持自定义指定任意位置的元素提取、多结果自动拼接:

library(tidyverse)

str_split_extract <- function(x, split_pattern = " ", indices, collapse = NULL) {
  # 分割字符串后提取指定位置元素
  res <- purrr::map(str_split(x, split_pattern), ~.x[indices])
  # 若指定拼接符则将多元素合并为单个字符串
  if (!is.null(collapse)) {
    res <- purrr::map_chr(res, paste, collapse = collapse)
  }
  return(res)
}

场景使用示例

提取示例数据中生物双名法(分割后的第3、4位元素,空格拼接)的使用方法:

# 构造示例数据
foo <-  data.frame(id = paste0("a", 1:6),
                   Organisms = c("EA - Enterobacter aerogenes",  "EA - Enterobacter aerogenes",
                                 "KP - Klebsiella pneumoniae", "ACBA - Acinetobacter baumannii",
                                 "ENC - Enterobacter cloacae", "KP - Klebsiella pneumoniae")) 

# 配合dplyr管道生成新列
foo <- foo %>% 
  mutate(organism_binomial = str_split_extract(Organisms, indices = c(3,4), collapse = " "))

参数说明

  • x: 待处理的字符串向量
  • split_pattern: 分割规则,支持正则表达式,默认按空格分割
  • indices: 要提取的元素位置向量,支持任意位置组合,例如c(2,5)、1:3均可传入
  • collapse: 多元素拼接符,设置为NULL时返回列表格式的提取结果,设置为空格、下划线等字符时会将同一条的多个提取结果拼接为单个字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:24:05