13

重複の可能性:
特定の変数名で save() する方法

objectName保存するオブジェクトの名前を持つ変数を使用して、オブジェクトをRに保存する簡単な方法は何だろうと思っています。ファイル名に名前を付けて、オブジェクトを簡単に保存したい。

を使用しようとしましたgetが、元のオブジェクト名でオブジェクトを保存できませんでした。

例:

ディレクトリ「dataDir」に保存したい「temp」というオブジェクトがあるとします。オブジェクトの名前を変数「objectName」に入れます。

試行 1:

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

get(objectName)R は、この呼び出しの結果ではなく、というオブジェクトを保存しようとするため、これは機能しませんでした。だから私は次のことを試しました:

試行 2:

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

Rはオブジェクトを「temp」という名前ではなく「object」という名前で保存するため、これは明らかに機能しませんでした。ロード後、「一時」ではなく「オブジェクト」のコピーがあります。(はい、同じ内容で...しかし、それは私が望むものではありません:))。だから私はそれがポインタを持つものであるべきだと思った。そこで、次のことを試しました。

試行 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引数saveが、( を介して渡される実際のオブジェクトではなく...) 保存するオブジェクトの名前である文字列のリストを取ることです。

于 2012-06-18T19:17:32.580 に答える
1

あなたの例は理解しにくいと思いましたが、あなたが望むものの2つの可能性を考えることができます. objectName.RDataファイル名をまたはとして保存する必要がありますtemp.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 に答える