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

J. *_*in. 29 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)
Run Code Online (Sandbox Code Playgroud)

但最后一行返回:

"Error in save(get(this_unique_tag), file = data_tag) : 
  object ‘get(this_unique_tag)’ not found"
Run Code Online (Sandbox Code Playgroud)

即使以下返回数据就好了:

get(this.csv.data$unique_tag)
Run Code Online (Sandbox Code Playgroud)

dar*_*zig 33

只需命名您使用的参数.使用您的代码,以下工作正常:

save(list = this.csv.data$unique_tag, file=saved_file_name)
Run Code Online (Sandbox Code Playgroud)


Cha*_*les 27

我的偏好是在加载时避免RData文件中的名称:

obj = local(get(load('myfile.RData')))
Run Code Online (Sandbox Code Playgroud)

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


Kar*_*ner 12

你真的应该使用saveRDS/readRDS来序列化你的对象.保存和加载用于保存整个环境.

saveRDS(this.csv.data, saved_file_name)
# later
mydata <- readRDS(saved_file_name)
Run Code Online (Sandbox Code Playgroud)