2012-05-22 15 views
0

Я использую кэш-память, но я не думаю, что получаю, как все работает. Я попытался отделить код в имитационных куски и планировавших куски, но часть кода очень долго и написал, прежде чем я начал sweave документ, так что я вместо этого использовать что-то вродеЧто означает, что «cacheSweave не кэширует побочные эффекты»?

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

Дело в том, скриптом .R представляет собой несколько запутанный имитационный код, включающий в себя функции графика и т. Д. Я читал в кэш-синей виньетке «cacheSweave не кэширует побочные эффекты», и графики не кэшируются, поэтому мне было интересно, работают ли функции plotting в mainScript.R, как оцениваются выражения?

Это может быть очевидный вопрос. Допустим, у меня есть еще один кусок после двух выше. все результаты выражений в «foo» и «plot» могут быть использованы в этом новом фрагменте, верно? Например,

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

Как раз в сторону - вы можете захотеть заглянуть в книжник. Это в основном гораздо более приятная версия Sweave, которая имеет кеширование, построенное автоматически, и делает тайные графики. – Dason

+0

Взгляните на этот ответ: http://stackoverflow.com/questions/9538367/sweave-cache-packages/9561953#9561953 – jthetzel

ответ

3

См Wikipedia для полного объяснения. Некоторые общие побочные эффекты в R включают в себя: print() объектов, рисовать участки, записывать файлы и загружать пакеты.

Пакет cacheSweave позволяет вам пропускать вычисления, и вы должны потерять все побочные эффекты. Как заметил Дэйсон, пакет knitr намного более естественен с точки зрения кэширования - то, что вы видите в незапакованном куске, будет видно в кеш-кеке. Кэширование побочных эффектов в knitr объясняется в its manual и cache page на веб-сайте.

BTW, knitr поддерживает совместимость с Sweave и cacheSweave, поэтому, надеюсь, вам не нужно ничего делать для перехода; просто позвоните library(knitr); knit('file.Rnw').

+0

спасибо. Я пытался опробовать knitr, но я новичок в sweave и не хочу погружаться в другой инструмент, прежде чем я полностью понял, как работает ткачество и кеширование. Итак, что происходит, когда кусок кэшируется, все загруженные пакеты не будут доступны, а графики, нарисованные и напечатанные на выходе, не будут выводиться при следующем сглаживании документа. –