2011-11-16 8 views
1

rpy2のドキュメントでは、robjects.rオブジェクトがRグローバル環境にアクセスできることを示しています。この地球環境を初期状態に「リフレッシュ」する方法はありますか?python rpy2モジュール:refreshグローバルR環境

グローバル環境を、rpy2.robjectsモジュールがインポートされたがまだ使用されていない状態に戻すことができます。このように、長時間実行されているジョブや予期しないその他の副作用についてのメモリリークについては心配する必要はありません。はい、環境をリフレッシュすると、別のカテゴリのバグが導入される可能性がありますが、私はそれが勝利になると私は信じています。

+0

リセットする内容を明確にすることはできますか?オブジェクト、ロードされたパッケージ、ディレクトリ、ランダムシード、さまざまな環境および構成値など、ワークスペース内でロットが変更される可能性があります。 – Iterator

+0

イテレーター - 私は応答で質問を編集しました。ありがとう! – SetJmp

答えて

2

あなただけ.GlobalEnvをクリアしたい場合、あなたは、単一の行でそれを行うことができ、それが言う文字通り何を意味するあなたの質問を取る:一部のオブジェクト名ではないので

rm(list = ls(all.names=TRUE)) 

all.names=TRUEビットが必要ですバニラls()によって返されます。例:

x <- rnorm(5) 
ls() 
# [1] "x" 

# Doesn't remove objects with names starting with "." 
rm(list=ls()) 
ls(all.names = TRUE) 
# [1] ".Random.seed" 

# Removes all objects 
rm(list = ls(all.names=TRUE)) 
ls(all.names = TRUE) 
# character(0) 
+0

これは非常に役に立ちます。しかし、私はロードされたパッケージがロードされたままであることに気づきますそれらを「アンロード」するメカニズムはありますか? – SetJmp

+0

例えば、 'lattice'パッケージをロードした場合、' detach( "package:lattice") 'でそれをアンロードすることができます(a.k.a."探索パスからデタッチ ")。 'package(base)'を除いて、接続されているパッケージ(これを見るために 'search()'を試してみてください)と同じことができます。おそらく、デフォルトでロードされているパッケージ( '' package:graphics: ''と '' package:grDevices "'を含む)をデタッチしたくないでしょう... –

0

Rには/ global環境が1つしかありません。 Rが始まると初期化されます。 Joshが指摘しているようにメンバーを削除することはできますが、必要になった場合は、新しい環境を導入し、それらの間を切り替えるか、不要になったときに削除する方がよいでしょう。

関連する問題