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

R语言读取前一日csv格式dataframe对比时路径多斜杠报错如何解决

问题解决办法

错误原因

  • file.path()函数的作用是拼接多级路径,每传入一个独立参数就会自动在参数之间添加系统路径分隔符(macOS/Linux下为/),你把日期对象、.csv后缀作为两个独立参数传入,所以生成的路径会在日期和后缀之间多出斜杠,和实际保存的文件名不匹配。
  • 额外隐藏问题:你使用writexl包的write_xlsx()导出的是Excel二进制文件,即使手动写了.csv后缀,实际文件格式还是xlsx,后续用read.csv()这类读取纯文本csv的函数也会报错。

修复方案

1. 修复路径拼接逻辑

两种可选用法,推荐第一种,适配不同操作系统的路径规则:

方法1:先拼接完整文件名再传入file.path()

#Compare with previous day
yesterday <- Sys.Date()-1
# 先拼接日期和后缀得到完整文件名
yesterday_file <- paste0(yesterday, ".csv")
df_yesterday <- read.csv(file.path("~/Documents/daily_data/data_August2021", yesterday_file), 
                 header = TRUE, sep=",", stringsAsFactors=TRUE)

方法2:直接用paste0拼接全路径

#Compare with previous day
yesterday <- Sys.Date()-1
df_yesterday <- read.csv(paste0("~/Documents/daily_data/data_August2021/", yesterday, ".csv"), 
                 header = TRUE, sep=",", stringsAsFactors=TRUE)

2. 修复文件读写格式不匹配问题

根据你的存储需求二选一修改:

方案A:确实需要保存为csv格式

修改保存端代码,用R原生write.csv()生成纯文本csv文件:

setwd("~/Documents/daily_data/data_August2021")
# row.names = FALSE 避免多余的行号列写入csv
write.csv(as.data.frame(df), paste0(Sys.Date(), '.csv'), row.names = FALSE)

方案B:需要保存为xlsx格式

修改文件名后缀和读取函数:

# 保存端代码
setwd("~/Documents/daily_data/data_August2021")
library(writexl)
write_xlsx(as.data.frame(df), paste0(Sys.Date(), '.xlsx'))

# 读取端代码
yesterday <- Sys.Date()-1
library(readxl)
yesterday_file <- paste0(yesterday, ".xlsx")
df_yesterday <- read_xlsx(file.path("~/Documents/daily_data/data_August2021", yesterday_file))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:30:05