加载多个文件并存储其变量名称R.

时间:2015-01-29 11:45:34

标签: r

我在R中加载了几个数据帧,我想知道如何存储我加载到列表中的数据帧的变量名,以便稍后我可以使用它们。

setwd("/path_to_files")
list.files()
files = list.files(pattern = "toptable*")

for (i in files){load(i)}
rm(files, i)

2 个答案:

答案 0 :(得分:0)

保存一些示例数据框:

df1 <- df2 <- df3 <- df4 <- mtcars
save(df1, file="toptable1.rda")
save(df2, file="toptable2.rda")
save(df3, file="toptable3.rda")
save(df4, file="toptable4.rda")

获取文件名:

files <- list.files(pattern = "toptable*")

将R数据文件中的数据加载到全局环境中并返回名称。

sapply(files,  function(x) load(x, .GlobalEnv))
## toptable1.rda toptable2.rda toptable3.rda toptable4.rda 
##        "df1"         "df2"         "df3"         "df4" 

传递USE.NAMES=FALSE以删除文件名并仅保留加载的对象名称:

sapply(files,  function(x) load(x, .GlobalEnv), USE.NAMES=FALSE)
## [1] "df1" "df2" "df3" "df4"

如果每个R数据文件有多个数据框/对象,您可以执行以下操作:

unlist(sapply(files, function(x) load(x, .GlobalEnv), USE.NAMES=FALSE))

将继续将所有名称作为字符向量返回。

您也可以将它们放在list

listenv <- new.env()
invisible(lapply(files, function(x) load(x, listenv)))
toptables <- as.list(listenv)
names(toptables)
## [1] "df1" "df2" "df3" "df4" "df5"

class(toptables$df2)
[1] "data.frame"

答案 1 :(得分:0)

如果您想使用代码,可以load()进入新环境。

myenv <- new.env() # create a new environment
for (i in files){load(i, envir=myenv)}
rm(files, i)

names <- ls(myenv)

要使用已加载的数据框,只需attach(myenv)