Как использовать объекты из глобальной среды в 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()
из инструментов.
Приветствия, шнур