升级R 4.2.1与RStudio后读取CSV报错:invalid 'description' argument
解决R 4.2.1中读取CSV文件时的"invalid 'description' argument"错误
问题根源
报错的核心原因是:旧版本R对文件路径的检查较宽松,而R 4.x版本对路径有效性要求更严格。原代码里list.files()默认只返回文件名(递归查找子目录时也不会带完整路径),导致read.csv()找不到实际文件位置,触发路径无效的报错。
修复步骤
1. 让list.files()返回完整文件路径
修改list.files调用,添加full.names = TRUE参数,确保返回的是包含完整路径的文件名,这样read.csv才能准确定位文件:
out_files <- list.files(pattern = "^DINum(.*)csv$", recursive = TRUE, full.names = TRUE)
2. 先检查是否找到有效文件
在读取前加个判断,避免没找到文件时循环空跑触发错误:
if (length(out_files) == 0) { stop("没有找到符合条件的CSV文件,请检查文件夹路径和文件名规则") }
3. 优化读取逻辑(可选,更简洁)
用lapply替代for循环,代码更简洁且不容易出索引错误:
list.data <- lapply(out_files, function(file) { read.csv(file, check.names = TRUE) })
4. 改掉全局赋值(可选,良好编程习惯)
原代码里wd <<- choose.dir()用了全局赋值,改成局部赋值更安全:
wd <- choose.dir(caption = "Select top level folder where your data is located") setwd(wd)
完整修复后的代码
wd <- choose.dir(caption = "Select top level folder where your data is located") setwd(wd) # 列出所有符合条件的完整文件路径 out_files <- list.files(pattern = "^DINum(.*)csv$", recursive = TRUE, full.names = TRUE) # 检查是否找到匹配文件 if (length(out_files) == 0) { stop("未找到匹配的CSV文件,请确认文件夹路径和文件名格式") } # 读取所有CSV文件到列表 list.data <- lapply(out_files, function(file) { read.csv(file, check.names = TRUE) })
内容的提问来源于stack exchange,提问作者GailA
相关产品推荐
相关产品推荐

