r语言 - 如何检测函数是否在 Rstudio 或 Jupyter 笔记本中调用



我正在研究一个需要用户输入的'高级'函数。函数请求输入的方式应该不同,具体取决于它是在 Rstudio 会话、Jupyter 笔记本还是终端中调用的。

如何针对这些环境进行测试?

我很难搜索这个问题。我一直在考虑用interactive()getOption("device")来推断我在哪里,但我希望可能有更明确的方法来实现这一目标。

RStudio 也总是设置一个环境变量RSTUDIO等。

在 RStudio 中:

R> Sys.getenv("RSTUDIO")
[1] "1"
R> 

标准会话:

R> Sys.getenv("RSTUDIO")
[1] ""
R> 

所以你可以比较""

R> Sys.getenv("RSTUDIO") == ""
[1] TRUE
R> 

部分答案:

要测试Rstudio,可以使用

.Platform$GUI
# [1] "RStudio" 

它适用于Windows和Linux。

不幸的是,对于终端和jupyterhub,这都是"X11"(在我的Linux机器上(。在其他平台上,它也可能是一堆其他东西。

但是,如果我们只考虑三种预期情况,这有效:

.Platform$GUI != "RStudio" & interactive() #TRUE for terminal

.Platform$GUI != "RStudio" & !interactive() #TRUE for Jupyter

最新更新