R语言批量加载.Rds文件时如何去掉扩展名重命名数据框
解决方案
你之前的逻辑错误出在readRDS()传入了去掉扩展名的字符串,导致系统找不到对应文件。实际只需要在赋值变量名时用去掉后缀的字符串,读取文件时仍使用带.Rds后缀的原文件名即可。
修改后的循环写法(兼容你原有的代码逻辑)
temp = list.files(pattern = "*.Rds") # 生成无后缀的变量名,正则添加转义和结尾匹配,避免误替换 var_names <- gsub("\\.Rds$", "", temp) for (i in 1:length(temp)) { # 读取用原文件名temp[i],赋值用处理后的变量名var_names[i] assign(var_names[i], readRDS(temp[i])) }
更简洁的无循环写法
如果不想显式写循环,可以用lapply实现相同效果,自动处理所有匹配的文件:
invisible(lapply(list.files(pattern = "\\.Rds$"), function(file) { assign(gsub("\\.Rds$", "", file), readRDS(file), envir = .GlobalEnv) }))
说明:
\\.Rds$的正则写法更严谨:\\.匹配真实的点号(避免.作为正则通配符匹配任意字符),$限定只匹配文件名结尾的后缀,不会误删文件名中间的.Rds字符invisible()用于隐藏lapply默认返回的无用列表,不会输出多余内容envir = .GlobalEnv确保变量被赋值到全局工作环境,可直接调用
运行环境兼容说明
以上代码在你使用的 R 4.1.1、RStudio 1.4.1717、macOS Catalina 10.15.7 环境下可正常运行。
内容的提问来源于stack exchange,提问作者pdeli
相关产品推荐
相关产品推荐

