我在R中加载了几个数据帧,我想知道如何存储我加载到列表中的数据帧的变量名,以便稍后我可以使用它们。
setwd("/path_to_files")
list.files()
files = list.files(pattern = "toptable*")
for (i in files){load(i)}
rm(files, i)
答案 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)
。