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

如何用R批量从URL中提取指定数字(支持万级链接)

用R语言提取链接末尾数字的实现方案

我拥有如下格式的链接地址:
"https://vdp.cuzk.cz/vdp/ruian/stavebniobjekty/10651624"
"https://vdp.cuzk.cz/vdp/ruian/stavebniobjekty/12488284124"
期望提取链接末尾的数字,输出结果如下:

10651624
12488284124

请问能否使用R语言实现该功能?是否支持批量处理(如10000条链接),能否通过循环完成?

完全可以用R语言实现这个需求,而且轻松支持批量处理(包括10000条链接的规模),既可以用循环,也可以用更高效的向量式操作(R中更推荐后者,速度更快)。

方法一:向量式操作(推荐,高效)

利用字符串处理函数直接对整个链接向量进行处理,无需循环,是R中最适合批量数据的处理方式。

使用stringr包(简洁直观)

stringr是tidyverse生态下的字符串处理包,语法简洁易读:

# 安装并加载包(首次使用需安装)
install.packages("stringr")
library(stringr)

# 模拟批量链接数据(替换为你的实际链接向量即可)
links <- c(
  "https://vdp.cuzk.cz/vdp/ruian/stavebniobjekty/10651624",
  "https://vdp.cuzk.cz/vdp/ruian/stavebniobjekty/12488284124"
)

# 提取末尾数字:正则表达式\\d+$匹配字符串结尾的所有数字
extracted_numbers <- str_extract(links, "\\d+$")

# 输出结果
cat(extracted_numbers, sep = "\n")

使用基础R函数(无需额外安装包)

如果不想安装第三方包,用基础R的sub函数也能实现:

links <- c(
  "https://vdp.cuzk.cz/vdp/ruian/stavebniobjekty/10651624",
  "https://vdp.cuzk.cz/vdp/ruian/stavebniobjekty/12488284124"
)

# 正则表达式匹配最后一个斜杠后的数字,替换为匹配到的内容
extracted_numbers <- sub(".*/(\\d+)$", "\\1", links)

cat(extracted_numbers, sep = "\n")

方法二:循环实现

如果需要在处理每条链接时添加额外逻辑,循环方式也完全可行:

links <- c(
  "https://vdp.cuzk.cz/vdp/ruian/stavebniobjekty/10651624",
  "https://vdp.cuzk.cz/vdp/ruian/stavebniobjekty/12488284124"
)

# 初始化结果向量,长度与输入链接一致
extracted_numbers <- character(length(links))

# 循环处理每条链接
for (i in seq_along(links)) {
  extracted_numbers[i] <- sub(".*/(\\d+)$", "\\1", links[i])
}

cat(extracted_numbers, sep = "\n")

批量处理说明

  • 向量式操作是R的原生高效处理方式,处理10000条链接几乎瞬间完成,性能最优
  • 循环方式虽然可行,但速度略逊于向量式操作,不过对于10000条数据来说,实际使用中的差距并不明显

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:35:26