在脚本开始时,我加载所有可用的数据帧,如下所示(来源):
temp = list.files(pattern="*.Rds")
for (i in 1:length(temp)) assign(temp[i], readRDS(temp[i]))
但是,加载的数据帧继承扩展(即.Rds
)。我想从data.frame
名称中去掉.Rds
(为了提高效率,在创建它们之前)。
在这里,我发现我可以使用以下代码:stripExtension <- gsub('.Rds', "", temp)
。然而,插入上面的2行代码之间,数据帧没有加载,因为缺少扩展:
temp = list.files(pattern="*.Rds")
stripExtension <- gsub('.Rds', "", temp)
for (i in 1:length(stripExtension)) assign(stripExtension[i], readRDS(stripExtension[i]))
我的问题:
- 如何一次加载多个
.Rds
文件,并为它们指定不同于其原始文件名的名称(即.Rds
文件名,但没有.Rds
扩展名)
非常感谢您的帮助。
使用的系统:
- R版本:4.1.1(2021-08-10)
- RStudio版本:1.4.1717
- 操作系统:macOS Catalina版本10.15.7
temp = list.files(pattern="[.]Rds$")
obj_nms = tools::file_path_sans_ext(basename(temp))
for (i in seq_along(temp))
assign(obj_nms[[i]], readRDS(temp[[i]]))
tools
自带r,所以您不必安装它。basename
从文件路径中删除目录名。
最终起作用的是:
rdsFilesFolder <- path("rdsFiles")
listOfRdsFiles <- list.files(path = rdsFilesFolder, pattern="*.Rds")
stripExtensions <- gsub('.Rds', "", listOfRdsFiles)
for (numberOfRdsFiles in 1:length(stripExtensions)) {
assign(stripExtensions[numberOfRdsFiles],
readRDS(paste0("./", rdsFilesFolder, "/", listOfRdsFiles[numberOfRdsFiles])))}
for
循环有一个assign
自变量,该自变量可能与readRDS
自变量不同。
此代码还有一个额外的优势,可以识别以%
开头的文件名(例如%5EGSPC.Rds
)。