R 命名存档对象的最佳做法?

R 命名存档对象的最佳做法?,r,file,parallel-processing,R,File,Parallel Processing,我有一个函数,它有一个列表输出。每次运行它时,我都希望使用save导出结果。运行几次之后,我想读入文件并比较结果。我这样做是因为我不知道会有多少任务,也许我会使用不同的计算机来计算每个任务。那么,我应该如何命名归档对象,以便以后可以全部读取它们 我最好的猜测是在保存之前动态命名变量,并跟踪对象名称,但我到处都看到这是一个大禁忌 那么我应该如何解决这个问题呢?您可能希望使用saveRDS和readRDS函数,而不是save和load。RDS版本功能将保存和读取没有附加名称的单个对象。您可以创建对象

我有一个函数,它有一个列表输出。每次运行它时,我都希望使用save导出结果。运行几次之后,我想读入文件并比较结果。我这样做是因为我不知道会有多少任务,也许我会使用不同的计算机来计算每个任务。那么,我应该如何命名归档对象,以便以后可以全部读取它们

我最好的猜测是在保存之前动态命名变量,并跟踪对象名称,但我到处都看到这是一个大禁忌


那么我应该如何解决这个问题呢?

您可能希望使用
saveRDS
readRDS
函数,而不是
save
load
。RDS版本功能将保存和读取没有附加名称的单个对象。您可以创建对象并将其保存到文件中(使用
paste0
sprintf
创建唯一的名称),然后在处理结果时,您可以一次读取一个对象,或将多个对象读入列表以使用它们。

您可以使用范围将检索到的名称隐藏在函数中,因此,首先可以将列表保存到文件:

mybiglist <- list(fred=1, john='dum di dum', mary=3)
save(mybiglist, file='mybiglist1.RData')

mybiglist有一次,我收到了几个RData文件,它们都只有一个变量x。为了读取工作区中的所有变量,我按顺序将每个变量加载到其环境中,并使用get()读取其值

tenv <- new.env()
load("file_1.RData", envir = tenv)
ls(tenv) # x
myvar1 <- get(ls(tenv), tenv)
rm(tenv)
....
tenv
tenv <- new.env()
load("file_1.RData", envir = tenv)
ls(tenv) # x
myvar1 <- get(ls(tenv), tenv)
rm(tenv)
....