在R中使用lapply读取文件夹内CSV文件时遭遇权限拒绝问题求助
合并文件夹中多个CSV文件时遇到权限拒绝错误
尝试对文件夹中的多个CSV文件执行rbind合并操作,昨天代码能正常运行,今天却持续报权限拒绝错误。已经重启过R,操作时也没有打开任何CSV文件。
我的代码:
fp <- "C:/Users/dsmith2/OneDrive - TPWD/Desktop/LMB Telemetry/R/WDMay23/merge/TB" df <- do.call(rbind,lapply(fp,read.csv))
报错信息:
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
cannot open file 'C:/Users/dsmith2/OneDrive - TPWD/Desktop/LMB Telemetry/R/WDMay23/merge/TB': Permission denied
问题根源与解决办法
核心问题:代码逻辑错误
你直接把文件夹路径传给了read.csv,但read.csv只能读取单个文件,没法直接读取文件夹。这才是报错的主要原因——昨天的代码可能包含了获取文件列表的步骤,今天被遗漏了,权限提示只是R尝试把文件夹当成文件打开失败的附带信息。
修复步骤:
- 先获取文件夹内所有CSV文件的完整路径
用list.files()函数筛选目标文件夹下的所有CSV文件,务必加full.names=TRUE拿到完整路径:fp <- "C:/Users/dsmith2/OneDrive - TPWD/Desktop/LMB Telemetry/R/WDMay23/merge/TB" # 提取文件夹下所有CSV文件的完整路径 csv_files <- list.files(path = fp, pattern = "\\.csv$", full.names = TRUE) # 先打印检查是否获取到正确的文件 print(csv_files) - 处理OneDrive同步干扰
- 查看OneDrive状态栏,确认该文件夹同步完成后再运行代码
- 临时把CSV文件复制到本地非OneDrive文件夹(比如桌面新建文件夹),再尝试合并,排除同步锁的影响
- 验证文件夹权限
- 右键目标文件夹→属性→安全,确认当前用户拥有读取权限
- 尝试以管理员身份启动R/RStudio,再执行代码
- 执行合并操作
确认拿到正确的文件列表后,再执行合并:
基础R方式:
用df_list <- lapply(csv_files, read.csv) df <- do.call(rbind, df_list)dplyr更灵活(支持列名不一致的情况):library(dplyr) df <- bind_rows(lapply(csv_files, read.csv))
内容的提问来源于stack exchange,提问作者David Smith
相关产品推荐
相关产品推荐

