Sweave в RStudio не может найти объекты, загруженные в глобальной среде

Читая этот пост, я подумал, что могу использовать Объекты R загружаются в глобальную среду сразу в .Rnw документах и ​​компилируются непосредственно в PDF в RStudio. Но, к сожалению, мне это не подходит...

Я хотел бы сделать summary из data.frame, который, несомненно, уже загружен в мою глобальную среду.

Вычисление summary(JLLdata) в консоли дает правильный результат. Однако, когда я пытаюсь включить summary(JLLdata) в свой файл .Rnw, я получаю сообщение об ошибке (chunk 1) Object 'JLLdata' not found.

Вот мой .Rnw синтаксис:

\documentclass{article}

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

<<JLLdata>>=
summary(JLLdata)
@

\end{document}

А вот скриншот из R Studio (видно что JLLdata в глобальном окружении и ошибка Compile PDF)

введите здесь описание изображения


person gosz    schedule 31.03.2015    source источник


Ответы (1)


Код из документа Sweave .Rnw запускается в отдельном сеансе R, поэтому он не имеет доступа к объектам, которые вы загрузили или создали в консоли. Вы должны явно загрузить данные в фрагмент кода Sweave, чтобы они были доступны при вызове summary.

person Thomas    schedule 31.03.2015
comment
Спасибо @Thomas, ты был прав. Включение load(file = "/path/globalenvironmnetsaved.RData") делает свою работу. Это немного раздражающее решение, поскольку мой .RData имеет размер 200 МБ, и, следовательно, компиляция PDF занимает некоторое время... - person gosz; 31.03.2015
comment
Попробуйте вместо этого использовать Knitr, который дает возможность кэширования, что значительно сокращает время компиляции. - person Thomas; 31.03.2015
comment
Или просто используйте Sweave() из командной строки, поскольку сам R обладает гибкостью, которую неизбежно лишает удобство кнопки графического интерфейса. Возможно, напишите небольшую служебную функцию, чтобы упростить процесс, поместив ее в свой .Rprofile или личный пакет для легкой загрузки. Что-то вроде: sweave2pdf <- function(file) { texfile <- Sweave(file); tools::texi2pdf(texfile) } - person Josh O'Brien; 31.03.2015