R语言中使用lapply调用read.csv时出现“无法打开连接”错误求助
解决R中
lapply(read.csv)"无法打开连接"的问题 我来帮你快速搞定这个问题!你遇到的报错本质是文件路径不匹配:
- 你用
list.files()从C:/Users/Rachael/Documents里获取了CSV文件名,但默认只返回纯文件名(比如"PIR.csv"),没带上完整路径 - 而你之前用
setwd()把工作目录设到了桌面,read.csv()会默认在当前工作目录(桌面)找文件,自然找不到Documents文件夹里的文件,所以触发"无法打开连接"的错误
两种可行的解决方案
方案1:让list.files返回完整文件路径
直接在list.files()里加上full.names = TRUE参数,这样返回的结果就是带完整路径的文件名,read.csv能直接识别:
library(DBI) library(proto) library(chron) library(RSQLite) library(sqldf) setwd("C:/Users/Rachael/Desktop")# 设置工作目录到桌面 # 加上full.names=TRUE获取完整路径 files = list.files(path = "C:/Users/Rachael/Documents", pattern = ".csv", full.names = TRUE) files # 现在会显示完整路径,比如"C:/Users/Rachael/Documents/PIR.csv" rdf=lapply(files, read.csv) # 现在可以正常加载文件了
方案2:在read.csv中拼接文件路径
如果你不想修改list.files()的返回结果,可以在lapply的匿名函数里,用file.path()把文件夹路径和文件名拼接起来,生成完整路径后再读取:
library(DBI) library(proto) library(chron) library(RSQLite) library(sqldf) setwd("C:/Users/Rachael/Desktop")# 设置工作目录到桌面 files = list.files(path = "C:/Users/Rachael/Documents", pattern = ".csv") files # 还是只显示文件名 # 用file.path拼接路径和文件名 rdf=lapply(files, function(file_name) { read.csv(file.path("C:/Users/Rachael/Documents", file_name)) })
验证方法
执行files后,如果看到的是类似"C:/Users/Rachael/Documents/PIR.csv"的完整路径,就说明路径设置正确了,再运行lapply就能成功加载所有CSV文件啦。
内容的提问来源于stack exchange,提问作者undergrad
相关产品推荐
相关产品推荐

