我反复应用一个函数来读取和处理一堆csv文件。每次运行时,该函数都会创建一个数据框(this.csv.data
)并使用save()将其写入具有唯一名称的.RData
文件。问题是,稍后当我使用.RData
读取这些load()
文件时,加载的变量名称不是唯一的,因为每个加载的名称都为this.csv.data
....
我想用独特的标签保存它们,以便在我load()
时它们正确命名。我已经创建了以下代码来说明。
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)
但最后一行返回:
"Error in save(get(this_unique_tag), file = data_tag) : object ‘get(this_unique_tag)’ not found"
即使以下内容返回数据也不错:
get(this.csv.data$unique_tag)
答案 0 :(得分:32)
只需命名您使用的参数即可。使用您的代码,以下工作正常:
save(list = this.csv.data$unique_tag, file=saved_file_name)
答案 1 :(得分:26)
我的偏好是在加载时避免RData文件中的名称:
obj = local(get(load('myfile.RData')))
通过这种方式,您可以加载各种RData文件并根据需要命名对象,或将它们存储在列表中等。
答案 2 :(得分:11)
你真的应该使用saveRDS / readRDS来序列化你的对象。 保存和加载用于保存整个环境。
saveRDS(this.csv.data, saved_file_name)
# later
mydata <- readRDS(saved_file_name)
答案 3 :(得分:0)
您可以使用
save.image("myfile.RData")
答案 4 :(得分:0)
这对我有用:
{% from "_formhelpers.html" import render_field %}
<form method=post>
<dl>
{{ render_field(form.post_title) }}
{{ render_field(form.post_genre) }}
{{ render_field(form.body) }}
</dl>
<p><input type=submit value=Post>
</form>
您可能不需要新的环境(但我没有尝试过):
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')
变量。