gpt4 book ai didi

r - 将包含同名对象的多个 .RData 文件合并为一个 .RData 文件

转载 作者:行者123 更新时间:2023-12-04 18:45:48 40 4
gpt4 key购买 nike

我有很多 .RData 文件,其中包含我在之前的分析中保存的一个数据框,并且每个加载的文件的数据框都具有相同的名称。因此,例如使用 load(file1.RData) 我得到一个名为 'df' 的数据框,然后使用 load(file2.RData) 我得到一个具有相同名称 'df' 的数据框。我想知道是否有可能将所有这些 .RData 文件组合成一个大的 .RData 文件,因为我需要一次加载它们,每个 df 的名称都等于文件名,这样我就可以使用不同的数据帧。

我可以使用下面的代码来做到这一点,但它非常复杂,必须有一个更简单的方法来做到这一点……谢谢你的建议。

假设我有 3 个 .RData 文件,并希望将所有文件保存在一个名为“main.RData”的文件中,并使用它们的特定名称(现在它们都以“df”的形式出现):

all.files = c("/Users/fra/file1.RData", "/Users/fra/file2.RData", "/Users/fra/file3.RData")
assign(gsub("/Users/fra/", "", all.files[1]), local(get(load(all.files[1]))))
rm(list= ls()[!(ls() %in% (ls(pattern = "file")))])
save.image(file="main.RData")


all.files = all.files = c("/Users/fra/file1.RData", "/Users/fra/file2.RData", "/Users/fra/file3.RData")

for (f in all.files[-1]) {
assign(gsub("/Users/fra/", "", f), local(get(load(f))))
rm(list= ls()[!(ls() %in% (ls(pattern = "file")))])
save.image(file="main.RData")
}

最佳答案

这是一个包含多个现有帖子的选项

all.files = c("file1.RData", "file2.RData", "file3.RData")

将多个数据帧读入单个命名列表 ( How can I load an object into a variable name that I specify from an R data file? )
mylist<- lapply(all.files, function(x) {
load(file = x)
get(ls()[ls()!= "filename"])
})

names(mylist) <- all.files #Note, the names here don't have to match the filenames

您可以保存列表,或在保存之前将数据帧传输到全局环境中 ( Unlist a list of dataframes )
list2env(mylist ,.GlobalEnv)

或者,如果数据帧相同并且您想要创建单个大数据帧,您可以折叠列表并添加一个带有贡献文件名称的变量 ( Dataframes in a list; adding a new variable with name of dataframe )。
all <- do.call("rbind", mylist)
all$id <- rep(all.files, sapply(mylist, nrow))

关于r - 将包含同名对象的多个 .RData 文件合并为一个 .RData 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14757668/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com