有没有办法使用RStudio直接从工作区中编织降价?

Mat*_*ert 26 r rstudio knitr

我想知道我是否可以使用knitrmarkdown来创建一个动态报告,其中包含源自当前工作空间的对象.再现性不是问题.我也在这里读了这篇非常好的帖子.

但我仍然收到一条错误消息,抱怨无法找到特定对象.

1)假设我打开一个新的降价文档并保存.

2)编写一个引用lm我工作区中某个对象的块.呼叫summary(mylmobject)

3)编织它.

遗憾的是,生成了报告,但无法显示回归输出,因为无法找到该对象.注意,如果我只是将对象保存到.Rdata然后直接从markdown文件加载它,它通常工作.

有没有办法在当前工作区中使用R markdown中的对象?这对于非R人在继续工作的同时显示一些输出会非常好.

Yih*_*Xie 32

RStudio 为您的R Markdown文件打开一个新的 R会话knit(),因此当前工作空间中的对象将无法用于该会话(它们是两个单独的会话).两种解决方案

  1. 向RStudio 提交功能请求,要求他们支持在当前R会话中编织,而不是强行启动新会话;
  2. 自己手动编织:( library(knitr); knit('your_file.Rmd')或者knit2html()如果你想一步完成HTML输出,或者rmarkdown::render()你正在使用R Markdown v2)

  • 我觉得选项1与可重复研究的范式背道而驰. (5认同)
  • @BrandonBertelsen你是对的,这正是RStudio每次开启新R会话的原因; 相比之下,Emacs/ESS在当前的R会话中调用Sweave/knitr.但是使用现有的R会话有一些优点:1.可以更快; 2.帮助我们调试代码(例如检查源文档生成的对象) (4认同)

mma*_*123 28

使用以下方法可能更容易从其他会话中保存数据:

save.image("C:/Users/Desktop/example_candelete.RData")
Run Code Online (Sandbox Code Playgroud)

然后将其加载到您的MD文件中:

load("C:/Users/Desktop/example_candelete.RData")
Run Code Online (Sandbox Code Playgroud)

  • 问题是我的会话太大,需要几分钟才能加载.我得到Rstudio来自可再现性的地方,但如果我们想使用markdown制作一个包含大量数据的可呈现报告,我们需要手动编织. (3认同)
  • 您可以选择使用save(mylmobject)而不是save.image()保存的内容 (2认同)