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

时间:2011-01-13 00:55:16

标签: r

我反复应用一个函数来读取和处理一堆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)

5 个答案:

答案 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') 变量。