2012-01-20 11 views
4

私はSweaveで動作するパッケージを作成しており、地球環境からSweave呼び出しをサンドボックスできるようにしたいと考えています。これは、私はそれが動作するはずだと思うだろうかあるのではなく:新しい環境でSweaveを実行できますか?

sweaveEnv <- new.env() 
eval(Sweave('myDocument.Rnw'), envir=sweaveEnv) 

理想的には私は、後のデバッグのためにその環境を保存したいと思います。

save(sweaveEnv, file='mySweaveEnv.Rda') 

答えて

3

あなたは、単に新しいRプロセスを開始することができます

system("Rscript -e 'Sweave(\"test.Rnw\");save.image(file=\"mySweaveEnv.Rda\")'") 
+0

完璧!ヴィンセントに感謝します。 – jbryer

3

あなたの主な目的は、その環境内のオブジェクトを保存する場合、あなたはここで、チャンクオプションcache=TRUEknitrパッケージを使用することができますチャンク内のオブジェクトはすべてファイルに保存され、後でデバッグするためにRにロードすることができます。 knitrは、キャッシュディレクトリの下のチャンクのそれぞれ.rdx.rdbファイルを作成します、とあなたはチャンクする環境でより多くのことをしたい場合は、R.

にこれらのデータベース内のオブジェクトをロードするためにlazyLoad()を呼び出すことができますknitrchunk hooksであり、フック経由で環境にアクセスできます。だから基本的にあなたが望むものを何でもすることができます - knitrは、ほとんど全てをユーザーに公開します。各チャンクは、キャッシュがオンのときに異なる空の環境で評価されることに注意してください。このトピックに関する例はまだありませんので、私の説明が十分明確であるかどうか教えてください。

+0

ありがとうYihui。私は開発しているパッケージにknitrとcacheSweaveのサポートを追加するつもりで、来週にあなたの助けを借りてくれるかもしれません。 – jbryer

関連する問題