R语言生成COVID数据GitHub链接时出现invalid 'trim'参数错误
问题
用户编写的R代码如下:
URL <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports_us/" start_date <- as.Date("2011-12-30") end_date <- as.Date("2012-01-04") dates_range <- seq(start_date, end_date, by = "days") for (date in dates_range) { result <- paste(URL, format(date, "%Y-%m-%d"), ".csv", sep = "") print(result) }
运行时持续报错:
Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, : invalid 'trim' argument
需求是生成指定日期范围对应的GitHub CSV文件链接,例如:https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports_us/2011-12-30.csv,实现日期范围与GitHub链接的拼接。
解决方案
报错大概率是循环中单个Date对象的format调用在特定R环境下触发了参数异常。改用向量化操作替代循环,既可以避免这个问题,又能让代码更简洁高效:
base_url <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports_us/" start_date <- as.Date("2011-12-30") end_date <- as.Date("2012-01-04") dates_range <- seq(start_date, end_date, by = "days") # 直接生成所有目标链接 full_links <- paste0(base_url, format(dates_range, "%Y-%m-%d"), ".csv") print(full_links)
也可以用sprintf来实现更清晰的字符串格式化:
base_url <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports_us/%s.csv" full_links <- sprintf(base_url, format(dates_range, "%Y-%m-%d")) print(full_links)
两种写法都能输出符合需求的链接列表,且规避了循环带来的潜在类型处理问题。
内容的提问来源于stack exchange,提问作者Oppa Oppa
相关产品推荐
相关产品推荐

