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

R新手编写按年份拼接URL读取CSV函数报错处理求助

R代码报错修复及实现方案

报错解决

你遇到的报错有两个触发点:

  1. 报错提示+运算符无法处理非数值参数,说明你实际运行的代码中误使用+拼接字符串,R不支持用+拼接字符对象,需使用paste/paste0函数完成拼接
  2. 你提供的代码中sep = “”使用了中文全角双引号,R无法识别该符号,需替换为半角双引号""

修复后的基础实现代码如下:

my_func <- function(year) {
  # paste0等价于sep=""的paste,直接拼接多个字符串
  url <- paste0("https://www.nbp.pl/kursy/Archiwum/archiwum_tab_a_", year, ".csv")
  d <- read.table(url, header = TRUE, sep = ";", fill = TRUE, encoding = "UTF-8")
  return(d)
}
print(my_func(2018))

正则实现思路(无需第三方包)

如果要求使用正则逻辑实现,可通过R基础函数sub()做占位符替换,完全符合无第三方包的要求,实现代码如下:

my_func <- function(year) {
  # 定义带{year}占位符的URL模板
  url_temp <- "https://www.nbp.pl/kursy/Archiwum/archiwum_tab_a_{year}.csv"
  # 正则匹配占位符并替换为传入的年份
  url <- sub("\\{year\\}", as.character(year), url_temp)
  d <- read.table(url, header = TRUE, sep = ";", fill = TRUE, encoding = "UTF-8")
  return(d)
}

注:正则中{}属于特殊字符,需要加双反斜杠转义才能被识别为普通符号匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:36:02