设置knitr块的环境

设置knitr块的环境,r,rstudio,knitr,R,Rstudio,Knitr,我有一个RStudio笔记本,我想将笔记本块设置为在定制的R环境中运行。我之所以想这样做,是因为我实际上在同一个项目中使用多个笔记本电脑,它们共享许多变量和函数,但最终进行的分析略有不同。我使用的是同一个RStudio实例,因此使用的是同一个R实例,但我不想担心在笔记本之间来回切换时会覆盖变量 我知道我可以用envir参数knitr::knit()。理想情况是Rmd文档,如下所示: ```{r setup} my.environment = new.env(parent = globalenv(

我有一个RStudio笔记本,我想将笔记本块设置为在定制的R环境中运行。我之所以想这样做,是因为我实际上在同一个项目中使用多个笔记本电脑,它们共享许多变量和函数,但最终进行的分析略有不同。我使用的是同一个RStudio实例,因此使用的是同一个R实例,但我不想担心在笔记本之间来回切换时会覆盖变量

我知道我可以用
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
运行它。