2013-11-12 2 views
1

Я использую Rstudio и sweave для создания отчета. Все работает хорошо, но я должен сделать много разных тяжелых вычислений. Они принимают разные часы каждый.Как обрабатывать различные длинные задачи с помощью sweave R?

Мой файл выглядеть следующим образом:

\documentclass{article} 

    \usepackage{amsmath} 
    \usepackage{amscd} 
    \usepackage[tableposition=top]{caption} 
    \usepackage{ifthen} 
    \usepackage[utf8]{inputenc} 

    \begin{document} 
    \SweaveOpts{concordance=TRUE} 

    \title{OES dataset} 
    \author{Luca Puggini} 

    \maketitle 

    \section{The dataset} 
    This is my data: 
<<echo=T>>= 
#suppose this is a very heavy task that takes a lot of time 
x=matrix(rnorm(100),10,10) 
y=rnorm(10) 
@ 
\section{operation} 
Now let's do some operations 
<<echo=T>>= 
x=x+1 
y=y+10 
@ 

\end{documents} 

Теперь измените последнюю строку, например

y=y+10000 # instead of y=y+10 

Как я могу скомпилировать PDF без пересчета всех задач (но только последний)?

EDIT: Наверное, самое лучшее, что нужно сделать, это переключиться на книжник и использовать кеш. Может кто-нибудь, пожалуйста, напишите код, как решить эту проблему с кешем?

+0

Вы можете реализовать простую систему кэширования - если какой-то результат существует (изображение графика, текстовый вывод и т. Д.), Используйте его, иначе запустите вычисление и сохраните результат. Создайте условное обозначение имен, чтобы сохранить результаты умным способом. – Fernando

+0

, если вы переключитесь на 'knitr' (вероятно, хорошая идея), есть встроенная система кеширования (google" кеш-кедр ") –

+0

Люди по-прежнему используют sweave? –

ответ

2

Посмотрите на Task View for Reproducible Research, который охватывает ряд кеширующих решений.

Кэширование решения также просто сделать себя в куске:

if (!exists(someVar)) { 
    if (file.exists("cache/someVar.rds")) { 
     someVar <- readRDS("cache/someVar.rds") 
    } else { 
     someVar <- reallyExpensiveComputation() 
     saveRDS(someVar, "cache/someVar.rds") 
    } 
} 

knitr также предлагает его с самого начала.

Смежные вопросы