我有一个RStudio笔记本,我想将笔记本电脑块设置为在自定义R环境中运行。我想这样做是因为我实际上在同一个项目中使用多个笔记本,并且它们共享许多变量和函数,但最终会进行略微不同的分析。我使用相同的RStudio实例,因此使用相同的R实例,但是当我在笔记本之间来回切换时,我不想担心覆盖变量。
我知道我可以使用envir
参数knitr::knit()
来完成整个文档,但由于我以交互方式使用RStudio笔记本,我想将环境设置为块级,而不是文档级别。理想情况是下面的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选项。
我认为解决方案可能是使用knitr钩子。一个理想的解决方案看起来像这样:
knit_hook$set(set_envir = function(before, options, envir){
if(before)
set.environment(options$set_envir)
else
set.envir(globalenv())
})
当然,这是不可能的,因为R中没有set.envir
功能允许您设置当前的工作环境。
实际的解决方案可能是使用with
或within
之类的东西,或者将块内容作为shquote
或类似的东西传递给函数。任何帮助表示赞赏!