我在Stack Overflow上见过类似的问题,但几乎没有结论性的答案,当然也没有对我有用的答案.
在Markdown(Rstudio)脚本中,访问和使用位于全局R环境中的对象(回归拟合、数据帧、其他对象)的最简单方法是什么.
考虑到RStudio团队倾向于让事情变得舒适和有效,我发现没有简单的解决方案是令人惊讶的.
提前谢谢.
我在Stack Overflow上见过类似的问题,但几乎没有结论性的答案,当然也没有对我有用的答案.
在Markdown(Rstudio)脚本中,访问和使用位于全局R环境中的对象(回归拟合、数据帧、其他对象)的最简单方法是什么.
考虑到RStudio团队倾向于让事情变得舒适和有效,我发现没有简单的解决方案是令人惊讶的.
提前谢谢.
不管是好是坏,这种疏忽是故意的.依赖在文档外部创建的对象会降低文档的可复制性——也就是说,如果您的文档在全局环境中需要数据,您不能只给某人(或您自己)文档和数据文件,然后让他们自己重新创建.
因此,为了在后台执行渲染,RStudio实际上创建了一个单独的R会话来渲染文档.该后台R会话无法看到您在RStudio中看到的交互式R会话中的任何环境.
解决此问题的最佳方法是使用用于创建全局环境内容的代码,并将其移动到文档中(如果不希望它显示在文档中,可以使用echo = FALSE
).这使您的文档具有自包含性和可复制性.
如果你不能做到这一点,有几种方法可以直接在全球环境中使用数据:
在R控制台上键入rmarkdown::render("your_doc.Rmd")
,而不是使用Knit HTML按钮.这将在本次会议上进行,而不是在后台会议上进行.或者:
将您的全球环境保存到.渲染之前的Rdata文件(使用R的save函数),并将其保存在文档中.