在R中同时重命名多个data.frame

  • 本文关键字:data frame 重命名 r
  • 更新时间 :
  • 英文 :


在脚本开始时,我加载所有可用的数据帧,如下所示(来源):

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)。

最新更新