R 如何使用特定变量名保存()

R 如何使用特定变量名保存(),r,R,我反复应用一个函数来读取和处理一堆csv文件。每次运行时,该函数都会创建一个数据帧(this.csv.data),并使用save()将其写入具有唯一名称的.RData文件。问题是,稍后当我使用load()读取这些.RData文件时,加载的变量名不是唯一的,因为每个变量都加载了名称this.csv.data 我想用唯一的标记保存它们,以便在我加载()时正确命名它们。我创建了以下代码来说明 this.csv.data = list(data=c(1:9), unique_tag = "some_un

我反复应用一个函数来读取和处理一堆csv文件。每次运行时,该函数都会创建一个数据帧(
this.csv.data
),并使用save()将其写入具有唯一名称的
.RData
文件。问题是,稍后当我使用
load()
读取这些
.RData
文件时,加载的变量名不是唯一的,因为每个变量都加载了名称
this.csv.data

我想用唯一的标记保存它们,以便在我加载()时正确命名它们。我创建了以下代码来说明

this.csv.data = list(data=c(1:9), unique_tag = "some_unique_tag")
assign(this.csv.data$unique_tag,this.csv.data$data)
# I want to save the data, 
# with variable name of <unique_tag>, 
# at a file named <unique_tag>.dat
saved_file_name <- paste(this.csv.data$unique_tag,"RData",sep=".")
save(get(this.csv.data$unique_tag), saved_file_name)
即使以下操作返回的数据很好:

get(this.csv.data$unique_tag)

只需说出你使用的参数。对于您的代码,以下功能可以正常工作:

save(list = this.csv.data$unique_tag, file=saved_file_name)

我的首选是避免加载时RData文件中的名称:

obj = local(get(load('myfile.RData')))

通过这种方式,您可以加载各种RData文件,并根据需要命名对象,或将它们存储在列表中等。

您确实应该使用saveRDS/readRDS来序列化对象。 保存和加载用于保存整个环境

saveRDS(this.csv.data, saved_file_name)
# later
mydata <- readRDS(saved_file_name)
saveRDS(this.csv.data,保存的文件名)
#后来
mydata您可以使用

save.image("myfile.RData")
这对我很有用:

env <- new.env()
env[[varname]] <- object_to_save
save(list=c(varname), envir=env, file='out.Rda')

env It“起作用”是因为它不会返回错误,但当我加载(保存的文件名)时,它会创建一个名为“whattosave”的变量,而不是“unique”的变量。加载十个文件后,我只会得到最新的“whattosave”,而不是十个唯一的变量…@jonw-对不起,我太疏忽了。我编辑了我的答案,希望它真的有用@乔恩;嘿,你不应该给darczig检查答案吗?我想你也可以看看
load()
中的
envir
参数,如果它们很重要,就保留原来的列名。如果您不需要一次处理多个文件,那么在继续下一个文件之前,您是否可以
rm()
分析对象?Chase,列名看起来仍然很好,问题在于创建的数据帧的重复名称。从长远来看,我希望将这些数据帧绑定到一个大的数据帧中,正如您所建议的,我一次不需要多个数据帧。这很好地解释了
local
get
的作用。
env <- new.env()
env[[varname]] <- object_to_save
save(list=c(varname), envir=env, file='out.Rda')
.GlobalEnv[[varname]] <- object_to_save
save(list=c(varname), envir=.GlobalEnv, file='out.Rda')