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

如何在R语言中提取数据框列字符串第二个空格之后的内容

R提取数据框字符串列第二个空格后内容的方法

问题背景

需要提取R数据框字符串列中,每个字符串第二个空格之后的全部内容,示例数据如下:

df <- data.frame(col = c("Adenia macrophylla", "Adinobotrys atropurpureus (Wall.) Dunn", "Ardisia purpurea Reinw. ex Blume"))

期望输出:

col
1                                    
2                           (Wall.) Dunn
3                        Reinw. ex Blume

最优实现方案

不需要使用separate+unite的拆分合并逻辑,也不需要额外做字符串补位,直接通过正则匹配替换即可实现,代码简洁且适配任意长度的字符串:

方案1:tidyverse生态实现

library(dplyr)
library(stringr)

df <- df %>%
  mutate(col = str_replace(col, "^\\S+\\s\\S+\\s?", ""))

正则逻辑说明:

  • ^匹配字符串起始位置
  • \\S+匹配首个非空格序列(第一个单词)
  • \\s匹配第一个空格
  • \\S+匹配第二个非空格序列(第二个单词)
  • \\s?匹配第二个单词后可能存在的空格,避免不足两个空格的字符串返回多余空格

方案2:基础R实现(无需加载第三方包)

df$col <- sub("^\\S+\\s\\S+\\s?", "", df$col)

已验证的可行方案

你自己提供的补位后删除前两段的方案也可以实现效果,核心逻辑也是基于正则匹配删除前两个单词及对应空格:

xx %>% 
  mutate(col = str_pad(col, 20,"right")) %>% 
  mutate(col = str_remove(col, '\\w+\\s\\w+\\s'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:09:04