0

私はキャッシュウィーブを使用していますが、すべてがどのように機能するかわかりません。コードをシミュレーション チャンクとプロット チャンクに分けようとしましたが、一部のコードは非常に長く、スウィーブ ドキュメントを開始する前に書かれているため、代わりに次のようなものを使用します。

 <<foo,cache=TRUE>>
 source("mainScript.R")
 @
 <<plot,fig=TRUE>>
 a<- print(str(F1))
 plot(F1)
 @

問題は、mainScript.R は、プロット関数などを含むやや複雑なシミュレーション コードです。cacheSweave ビネット「cacheSweave は副作用をキャッシュしない」を読み、プロットはキャッシュされないので、mainScript.R のプロット関数が式の評価方法に影響するかどうか疑問に思っていましたか?

これは当然の質問かもしれません。上記の 2 つの後に別のチャンクがあるとします。「foo」と「plot」の両方の式の結果はすべて、この新しいチャンクで使用できますよね? 例えば、

 <<post-chunk>>
 print(a)
 print(str(F1))
 @
4

1 に答える 1

3

完全な説明については、ウィキペディアを参照してください。R の一般的な副作用には、print()オブジェクト、プロットの描画、ファイルの書き込み、パッケージの読み込みなどがあります。

このcacheSweaveパッケージでは、計算をスキップすることしかできず、すべての副作用を失う必要があります。Dason がコメントしたように、knitrパッケージはキャッシングの点ではるかに自然です。キャッシュされていないチャンクに表示されるものは、キャッシュされたチャンクに表示されます。副作用のキャッシュについては、そのマニュアルと Web サイトのキャッシュ ページknitrで説明されています。

ところで、knitrSweave および cacheSweave との互換性を維持しているため、移行のために何もする必要がないことを願っています。電話するだけlibrary(knitr); knit('file.Rnw')です。

于 2012-05-23T01:15:24.670 に答える