非工作目录读取Excel文件报错,如何无需切换目录解决?
无需切换工作目录读取非工作目录下的多个Excel文件
问题出在list.files()默认只返回文件名,而非完整文件路径。当你用lapply调用read_excel()时,函数会在当前工作目录下查找这些文件名,自然找不到存放在05_TT/Output/下的文件。
有两种无需切换工作目录的解决方法:
方法1:让list.files()返回完整路径
给list.files()添加full.names = TRUE参数,直接获取带路径的完整文件名:
library(readxl) # 获取带完整路径的文件名列表 file.list <- list.files(path = "05_TT/Output/", pattern='*.xlsx', full.names = TRUE) # 批量读取文件 df.list <- lapply(file.list, read_excel)
方法2:在读取时拼接路径
如果你已经获取了纯文件名列表,可以在lapply的匿名函数里用file.path()拼接路径和文件名(跨平台兼容,避免手动写分隔符出错):
library(readxl) file.list <- list.files(path = "05_TT/Output/", pattern='*.xlsx') # 拼接路径后读取 df.list <- lapply(file.list, function(filename) { read_excel(file.path("05_TT/Output/", filename)) })
两种方法都能在不切换工作目录的前提下完成文件读取,方法1更简洁高效。
内容的提问来源于stack exchange,提问作者JontroPothon
相关产品推荐
相关产品推荐

