使用带有对象名称的变量保存对象

FBE*_*FBE 12 r save

可能重复:
如何使用特定变量名保存()

我想知道一个简单的方法是使用一个objectName带有要保存的对象名称的变量来保存R 中的对象.我希望这可以轻松保存对象,其名称在文件名中.

我试图使用get,但我没有设法用它的原始对象名称保存对象.

例:

如果我有一个名为"temp"的对象,我想将其保存在"dataDir"目录中.我将对象的名称放在变量"objectName"中.

尝试1:

objectName<-"temp"
save(get(objectName), file=paste(dataDir, objectName, ".RData", sep=""))
load(paste(dataDir, objectName, ".RData", sep=""))
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为R试图保存一个被调用的对象get(objectName),而不是这个调用的结果.所以我尝试了以下方法:

尝试2:

objectName<-"temp"
object<-get(objectName)
save(object, file=paste(dataDir, objectName, ".RData", sep=""))
load(paste(dataDir, objectName, ".RData", sep=""))
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,因为R保存名为"object"的对象,而不是名称"temp".加载后我有一个"对象"的副本,而不是"临时".(是的,内容相同......但这不是我想要的:)).所以我认为它应该是指针.所以尝试了以下内容:

尝试3:

objectName<-"temp"
object<<-get(objectName)
save(object, file=paste(dataDir, objectName, ".RData", sep=""))
load(paste(dataDir, objectName, ".RData", sep=""))
Run Code Online (Sandbox Code Playgroud)

与尝试2相同的结果.但我不确定我在做我认为我正在做的事情.

这是什么解决方案?

Gre*_*now 19

试试save(list=objectName, file=paste(objectName, '.Rdata', sep='') ).

关键是list参数save采用一个字符串列表,它是要保存的对象的名称(而不是传递的实际对象...).

  • 您也可以使用`paste0(objectName,'.RData')`,这将为您节省几笔钱. (3认同)