2012-06-18 9 views
8

可能性の重複:
how to save() with a particular variable name保存オブジェクト

私は簡単な方法はとobjectName変数を使用して、R内のオブジェクトを保存するためには何か思ったんだけど保存するオブジェクトの名前。私はこれをファイル名に名前を付けてオブジェクトを簡単に保存したい。

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

例:

私は、ディレクトリ「DATADIR」に保存しておきたい「TEMP」と呼ばれるオブジェクトを、持っている場合。私はオブジェクトの名前を変数 "objectName"に入れます。

試み1:Rはget(objectName)と呼ばれるオブジェクトを保存しようとするため

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

これは、代わりにこの呼び出しの結果は、動作しませんでした。 Rは、名前「オブジェクト」を持つオブジェクトを保存し、名前ではなく「一時」であるため、

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

は、この明らかに動作しませんでした:

試み2:だから私は、次の試してみました。ロード後、私は "temp"の代わりに "object"のコピーを持っています。 (はい、同じ内容で...しかし、それは私が欲しいものではありません:))。だから私はポインタで何かにすべきだと思った。

試み3:だから、次しようとした試み2と

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

同じ結果をしかし、私は私は私がやっていると思う何をやっているかわかりません。

これはどのような解決方法ですか?

答えて

12

お試しsave(list=objectName, file=paste(objectName, '.Rdata', sep=''))

キーはsavelist引数が(むしろ...を通過した実際のオブジェクトよりも)保存するオブジェクトの名前である文字列のリストを取るということです。

+0

これはまさに私が必要としていたものです。 – FBE

+1

'paste0(objectName、 '.RData')'を使用することもできます。これにより、いくつかのストロークが保存されます。 –

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とまったく同じことになります。

+0

ええと...私の例は十分にはっきりしていないと思います。オブジェクト "ObjectName"を保存するのではなく、 "temp"というオブジェクトを保存することです。例えば; "temp"は保存したい 'data.frame'です。次に、 'objectName < - " temp "'を実行して、例えば 'save'コード行を実行したいと思います。 (理由は、オブジェクト名の値を変更するだけで、すべてのセーブ&ロードコード(および他のもの)を変更する必要はありません) – FBE

関連する問題