在knitr

时间:2015-09-16 20:05:21

标签: knitr

我想使用knitr生成一个文档,其中包含在R中单独定义的数字,表格和图形。我有一个单独的.R脚本,在其中我定义了感兴趣的变量,我已执行这个脚本并验证了变量是否在内存中。然后,在.Rmd文件中,我有R标记代码,在其中我尝试显示我在R中定义的变量。每当我尝试编织时,我都会收到错误消息,说明如下:

  

唯一错误(c(“AsIs”,oldClass(x))):找不到对象“lamdaQ6”...

显然,knitr进程启动了一个新环境,它排除了已经定义的变量。我有相当广泛的R代码来定义我想要包含在文档中的变量,我希望将它与R标记代码分开(为了清楚起见,并且因为R标记对于R来说不是一个好的开发环境)。

是否有一些方法可以保留knitr中R存储器中现有变量的意识?我已经广泛搜索并找不到解决方案,可能是因为我不知道正确的术语。

1 个答案:

答案 0 :(得分:0)

Paul Roub提供的解决方案有效 - 我认为它没有,但结果是由于我自己的错字。

一个更清洁的解决方案,满足我的需求,而不是整个R文件的来源,是使用" save"仅保存创建文档所需的对象。我添加了一行来保存.R文件末尾的对象,然后使用" load"加载.Rmd脚本顶部的对象。

所以,在.R文件的末尾,要保存对象XX和YY,我有:

节省(XX,YY,文件=" Data4Rmd.RData&#34)

然后,在.Rmd文件的开头附近,要导入这些对象,我有:

```

{R,回波= FALSE}

setwd(" C:\ CurrentProjectDirectory&#34)

负载(文件=" Data4Rmd.RData&#34)

```

这允许我稍后使用如下语句:

衰减率为lambda =`r XX`,平均寿命为'r YY`。

另一种替代方案可能是保存和加载整个工作区,但这似乎过分了。

感谢Paul的帮助,非常感谢:)