我在Stack Overflow上看过类似的问题,但几乎没有确凿的答案,当然也没有对我有用的答案.
在Markdown(Rstudio)脚本中访问和使用位于全局R环境中的对象(回归拟合,数据框架,其他对象)的最简单方法是什么.
鉴于RStudio团队倾向于让事情变得舒适和有效,我觉得令人惊讶的是,没有简单的解决方案.
提前致谢.
Jon*_*han 46
无论好坏,这种遗漏都是故意的.依赖在文档外部创建的对象会使文档的可重现性降低 - 也就是说,如果您的文档需要全局环境中的数据,那么您不能仅仅向某人(或您自己在两年内)提供文档和数据文件并让它们重新创建它本身.
出于这个原因,为了在后台执行渲染,RStudio实际上创建了一个单独的R会话来渲染文档.该背景R会话无法看到您在RStudio中看到的交互式R会话中的任何环境.
解决此问题的最佳方法是使用您用于创建全局环境内容的代码并将其移动到文档中(echo = FALSE
如果您不希望它显示在文档中,则可以使用).这使您的文档自包含且可重现.
如果您不能这样做,可以采取一些方法直接在全局环境中使用数据:
而不是使用Knit HTML按钮,rmarkdown::render("your_doc.Rmd")
在R控制台上键入.这将编织当前会话而不是后台会话.或者:
小智 7
好吧,就我而言,我找到了以下解决方案:
(1) 将您的全球环境保存在 .Rdata 文件中,该文件位于您的 .Rmd 文件所在的同一文件夹中。(您只需点击“全球环境”面板上的令人不安的图片即可)
(2) 在你的Rmarkdown脚本中写入以下代码:
load(file = "filename.RData") # it load the file that you saved before
Run Code Online (Sandbox Code Playgroud)
并停止痛苦。
转到 RStudio\xc2\xb4s“工具”和“全局选项”并访问“R Markdown”选项卡,您可以在“评估目录中的块”中进行选择,然后选择选项“文档”和 R Markdown 编织引擎将像普通 R 代码一样访问全局环境。希望这对搜索此信息的人有所帮助!
\n