设置knitr块的环境
我有一个RStudio笔记本,我想将笔记本块设置为在定制的R环境中运行。我之所以想这样做,是因为我实际上在同一个项目中使用多个笔记本电脑,它们共享许多变量和函数,但最终进行的分析略有不同。我使用的是同一个RStudio实例,因此使用的是同一个R实例,但我不想担心在笔记本之间来回切换时会覆盖变量 我知道我可以用设置knitr块的环境,r,rstudio,knitr,R,Rstudio,Knitr,我有一个RStudio笔记本,我想将笔记本块设置为在定制的R环境中运行。我之所以想这样做,是因为我实际上在同一个项目中使用多个笔记本电脑,它们共享许多变量和函数,但最终进行的分析略有不同。我使用的是同一个RStudio实例,因此使用的是同一个R实例,但我不想担心在笔记本之间来回切换时会覆盖变量 我知道我可以用envir参数knitr::knit()。理想情况是Rmd文档,如下所示: ```{r setup} my.environment = new.env(parent = globalenv(
envir
参数knitr::knit()。理想情况是Rmd文档,如下所示:
```{r setup}
my.environment = new.env(parent = globalenv())
knitr_opts$set(envir = my.environment)
```
... markdown content...
```{r another-chunk}
a = 5 # a is assigned in my.environment
```
当然,上述操作是不可能的,因为没有envir
knitr选项
我认为解决办法可能是使用刀钩。理想的解决方案如下所示:
knit_hook$set(set_envir = function(before, options, envir){
if(before)
set.environment(options$set_envir)
else
set.envir(globalenv())
})
当然,这是不可能的,因为R中没有允许您设置当前工作环境的set.envir
函数
实际的解决方案可能是在中使用和或之类的内容,或者将块内容作为shquote
之类的内容传递给函数。感谢您的帮助 进一步的研究表明这是不可能的。。。原因是RStudio中的“run”按钮只是源代码块,而不是通过knitr
运行它。进一步的研究表明这是不可能的。。。原因是RStudio中的“run”按钮只是源代码块,而不是通过knitr
运行它。