我正在研究一个需要用户输入的'高级'函数。函数请求输入的方式应该不同,具体取决于它是在 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