Как использовать объекты из глобальной среды в Rstudio Markdown

Я видел похожие вопросы о переполнении стека, но практически никаких окончательных ответов и, конечно же, никакого ответа, который сработал у меня.

Каков самый простой способ доступа и использования объектов (регрессионные подходы, кадры данных и другие объекты), которые находятся в глобальной среде R в Markdown (Rstudio) script.

Я нахожу удивительным, что нет простого решения этого, учитывая стремление команды RStudio сделать вещи удобными и эффективными.

Спасибо заранее.

Ответы

Ответ 1

К лучшему или худшему это упущение преднамеренно. Опираясь на объекты, созданные за пределами документа, ваш документ становится менее воспроизводимым - то есть, если вашему документу нужны данные в глобальной среде, вы не можете просто дать кому-то (или себе через два года) файлы документов и данных и позволить им воссоздать это сами.

По этой причине и для выполнения рендеринга в фоновом режиме RStudio фактически создает отдельный сеанс R для визуализации документа. Этот фоновый сеанс R не может видеть какие-либо среды в интерактивном сеансе R, который вы видите в RStudio.

Лучшим способом решения этой проблемы является использование кода, который вы использовали для создания содержимого глобальной среды, и перемещения его внутри документа (вы можете использовать echo = FALSE, если вы не хотите, чтобы он отображался в документе). Это делает ваш документ самодостаточным и воспроизводимым.

Если вы не можете этого сделать, есть несколько подходов, которые вы можете использовать для непосредственного использования данных в глобальной среде:

  • Вместо кнопки Knit HTML введите rmarkdown::render("your_doc.Rmd") в консоли R. Это будет связано в текущей сессии вместо фонового сеанса. В качестве альтернативы:

  • Сохраните свою глобальную среду в файле .Rdata до рендеринга (используйте функцию R save) и load в вашем документе.

Ответ 2

У меня такая же проблема. Некоторым вещам довольно много времени, чтобы воспроизводить каждый раз.

Я думаю, что может быть другой ответ. Что делать, если вы сохраните среду с помощью функции save.image() в другом файле, чем стандартный .Rdata. Затем верните его с помощью load().

Чтобы убедиться, что вы используете одни и те же данные, используйте md5sum() из инструментов.

Приветствия, шнур