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

如何从URL中提取最后一个ID?R语言批量处理异常求助

解决R脚本提取URL末尾ID重复的问题

问题原因

你的代码里temp[[1]][length(temp[[1]])]是直接取temp列的第一个列表元素的最后一项,所以所有行都会复用第一行的分割结果,导致ID全部重复。

解决方案1:修正原分割逻辑

利用purrr包的map_chr函数,逐行处理str_split返回的列表列,提取每行的最后一项:

library(stringr)
library(dplyr)
library(purrr)

df = read.csv('~/Downloads/urls.csv')

df = df %>%
  mutate(temp = str_split(url, pattern = '-')) %>%
  # 遍历每个列表,取最后一个元素并转为字符向量
  mutate(id = map_chr(temp, ~ last(.x))) %>%
  select(-temp) # 可选:删除临时的temp列

解决方案2:更简洁的正则提取法

既然你已经用basename拿到了最后一个斜杠后的文本,直接用正则表达式提取末尾的数字更高效,不需要分割字符串:

library(stringr)
library(dplyr)

df = read.csv('~/Downloads/urls.csv')

df = df %>%
  mutate(basename_text = basename(url)) %>%
  # 提取字符串末尾的所有数字
  mutate(id = str_extract(basename_text, "\\d+$")) %>%
  select(-basename_text) # 可选:删除临时列

正则\\d+$的含义是:匹配字符串末尾($)的一个或多个数字(\\d+)。

内容的提问来源于stack exchange,提问作者Firda el.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:50:45