Распечатать исходный файл R в приложении, используя Sweave - PullRequest
2 голосов
/ 06 декабря 2010

Я разделяю файлы R и Rnw, а затем загружаю данные / графики R с помощью load("file.R") в первом фрагменте Sweave. Есть ли способ, которым я могу напечатать исходный файл R в приложении, не выполняя весь код? (т. е. код достаточно медленный, поэтому я не хочу source() его в блоке echo=TRUE).

Спасибо!


Обновление - на самом деле, я не думаю, что моя source() идея работает.

Ответы [ 4 ]

5 голосов
/ 06 декабря 2010

Как насчет использования пакета Latex?
Добавить в заголовок
\ usepackage {fancyvrb}
Затем
\ VerbatimInput {yourRfile.R}

3 голосов
/ 06 декабря 2010

Вы можете использовать пакет highlight для вывода красиво отформатированного красочного кода:

highlight("myRfile.R", renderer = renderer_latex(document = F))

Но не забудьте вставить в свой латексный документ длинную преамбулу, которую вы получите с документом = T.

Вы можете экспериментировать с кодом напрямую:

highlight(output="test.tex", 
          parser.output = parser(text = deparse(lm)),
          renderer =  renderer_latex(document = T))

и получите

alt text

2 голосов
/ 31 мая 2011

Разделение файлов R и Rnw отчасти отрицательно сказывается на цели грамотного программирования.Мой собственный подход состоит в том, чтобы включать фрагменты кода в соответствующем месте в тексте.Если моя аудитория не заинтересована в коде, то я могу пометить его как

<<foo, echo=FALSE>>=
x <- 1:10
@

. Я могу собрать код в приложении как

<<appendix-foo, eval=FALSE>>=
<<foo>>
@

, что, я признаю, немногоклуджа и склонности к ошибкам (забытые куски).Быстро хочется связать документ со вспомогательным материалом (наборы данных, полезные вспомогательные функции, не-R-скрипты) в R-пакет, и их нетрудно создать.При сборке пакета автоматически создаются файлы pdf и Stangle'd R, и это именно то, что вам нужно.Сборка пакета может быть медленным процессом, но установка пакета не требует перекомпоновки виньеток, поэтому она быстрая и удобная для тех, кому вы предоставляете пакет.

Для работы с форматированием / текстом яиспользуйте глобальную опцию \SweaveOpts{eval=FALSE}.

2 голосов
/ 12 мая 2011

Я обычно решаю это следующим образом:

\begin{appendix}

\section{Appendix A}

\subsection{R session information}

<<SessionInforamtaion,echo=F,eval=T,results=tex>>=

toLatex(sessionInfo())

@


\subsection{The simulation's source code}

<<SourceCode,echo=F,eval=T>>=

Stangle(file.path("Projectpath","RnwFile.Rnw"))

SourceCode <- readLines(file.path("Projectpath","Codefile.R"))

writeLines(SourceCode)

@
\end{appendix} 

Используя это, вы должны думать о максимальном количестве символов в строке.

...