我似乎无法让R markdown/knitr在R中查看/使用我的全局环境中的对象。
根据我所读到的内容,knitr应该使用全局环境作为标准,但是我在代码块中包含的每个对象都会返回错误
## Error: object 'XXX' not found我是不是遗漏了一些非常简单的东西?
是否需要先从全局环境手动加载对象?
提前感谢
马蒂
发布于 2014-11-17 02:09:40
如果您已经将对象保存到文件中,则用于标记的一种简单方法如下所示:
if(file.exists("rfModel.Rda")){
load("rfModel.Rda")} else {
modFit <- train(class~.,method="rf",data=train)
}这有效地绕过了冗长的模型构建时间,只在它还不作为对象存在的情况下构建它,因此它保留了可重复性。这类似于缓存的概念,但更通用的IMHO。
发布于 2017-08-20 20:13:22
听起来你想让相同的代码同时适用于knitr和你的全局环境。当构建在构建过程中需要测试的复杂Rmd文件时,这可能很有用。
问题在于,当你按knit时,knit使用的是本地文件夹,而不是查找项目主文件夹(即Rproj -我假设你使用相对路径)。所以当你运行代码时,它只对其中的一个起作用。解决这个问题的方法是使用到项目文件夹的相对路径在Rmd中编写代码(就像在普通的R脚本中一样),然后重定向code以使用项目主文件夹。为此,请在rmd脚本的顶部插入以下代码。
```{r setup, include=FALSE}
library(knitr)
dd <- getwd()
knitr::opts_knit$set(root.dir = paste0(dd,'/../../'))
knitr::opts_chunk$set(cache.path = paste0(dd,'/cache/'))
knitr::opts_chunk$set(fig.path = paste0(dd,'/figures/'))
```此代码执行以下操作:
祝你编码愉快。
https://stackoverflow.com/questions/22488736
复制相似问题