13

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

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

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

例子:

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

尝试1:

objectName<-"temp"
save(get(objectName), file=paste(dataDir, objectName, ".RData", sep=""))
load(paste(dataDir, objectName, ".RData", sep=""))

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

尝试2:

objectName<-"temp"
object<-get(objectName)
save(object, file=paste(dataDir, objectName, ".RData", sep=""))
load(paste(dataDir, objectName, ".RData", sep=""))

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

尝试 3:

objectName<-"temp"
object<<-get(objectName)
save(object, file=paste(dataDir, objectName, ".RData", sep=""))
load(paste(dataDir, objectName, ".RData", sep=""))

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

解决方案是什么?

4

2 回答 2

27

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

关键是list参数 tosave接受一个字符串列表,它是要保存的对象的名称(而不是通过的实际对象...)。

于 2012-06-18T19:17:32.580 回答
1

我发现您的示例难以理解,但我可以想到您想要的两种可能性。您要么希望将文件名另存为objectName.RDatatemp.RData. 这是你如何做到的:

objectName<-"temp"

# This saves the object as "temp.RData"
save(objectName, file=paste(dataDir, objectName, ".RData", sep=""))
# Loading it will bring it back with the name objectName, and the value temp
load(paste(dataDir, 'temp', '.RData', sep=''))

# This saves the object as "objectName.RData"
save(objectName, file=paste(dataDir, deparse(substitute(objectName)), ".RData",    sep=""))
# Loading it will bring it back with the name objectName, and the value temp
load(paste(dataDir, 'objectName', '.RData', sep=''))

您的所有尝试都返回错误,因为您调用get不正确。它应该是get('objectName'),但如果你考虑一下,那会让你得到和 完全一样的东西objectName

于 2012-06-18T15:11:45.640 回答