【问题标题】:How do you tell programmatically if you are running Architect/StatET?如果您正在运行 Architect/StatET,您如何以编程方式判断?
【发布时间】:2014-12-01 09:41:58
【问题描述】:

不同的 IDE 各有特点,因此了解您使用什么 IDE 运行 R 有时会很有用。

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

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

(或者,正如 Hadley 评论的那样,gui &lt;- .Platform$GUI; !is.null(gui) &amp;&amp; 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"

我不清楚如何从中进行可靠的跨平台测试。你能找到更好的测试吗?

【问题讨论】:

  • 更新:这些检查功能现在在assertive的开发版本中,您可以通过library(devtools); install_bitbucket("assertive", "richierocks")获得。
  • 检查 RStudio 的最佳方式是.Platform$GUI

标签: r statet


【解决方案1】:

我还没有找到任何非常好的测试,但还有一些 Architect 调整的迹象。

首先,它加载一个名为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"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多