如何以编程方式告诉您是否正在运行Architect / StatET?

时间:2014-12-01 09:41:59

标签: r statet

不同的IDE有怪癖,因此偶尔有用的是能够知道用于运行R的IDE。

您可以通过测试RSTUDIO环境变量来测试您是否正在运行RStudio。

is_rstudio <- function()
{
  env <- Sys.getenv("RSTUDIO")
  !is.null(env) && env == "1"
}

(或者,正如Hadley评论的那样,gui <- .Platform$GUI; !is.null(gui) && gui == "RStudio"。)

您可以通过检查基本环境中名为Revo.version的列表来测试Revolution R.

is_revo_r <- function()
{
  exists("Revo.version", "package:base", inherits = FALSE) && is.list(Revo.version)
}

是否有类似的检查可以查看您是否正在运行Architect或StatET?

我发现的最接近的事情是,默认情况下,Architect会将其嵌入的Rtools副本的路径预先添加到PATH环境变量。

strsplit(Sys.getenv("PATH"), ";")[[1]][1]
## [1] "D:\\Program Files\\Architect\\plugins\\eu.openanalytics.architect.rtools.win32.win32_0.9.3.201307232256\\rtools\\bin"

我不清楚如何通过这种方式进行可靠的跨平台测试。你能找到更好的测试吗?

1 个答案:

答案 0 :(得分:4)

我没有找到任何非常好的测试,但建筑师还有更多的调整迹象。

首先,它加载名为rj的包。我们可以使用

进行测试
"package:rj" %in% search()

其次,它会覆盖默认的图形设备(请查看getOption("device"))。这是一个匿名函数,因此我们无法按名称进行测试,但我认为name参数的值应该与windowspng等其他设备区分开来。

device_name <- formals(getOption("device"))$name
!is.null(device_name) && device_name == "rj.gd"

如果您正在运行Architect,那么组合这两个测试应该相当准确。

is_architect <- function()
{
  "package:rj" %in% search() &&
  !is.null(device_name <- formals(getOption("device"))$name) &&
  device_name == "rj.gd"
}