6

さまざまな IDE には癖があるため、R を実行するためにどの IDE を使用しているかを知ることができると便利な場合があります。

RSTUDIO環境変数をテストすることで、RStudio を実行しているかどうかをテストできます。

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

(または、ハドリーがコメントしたように、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"

これから信頼できるクロスプラットフォームテストを作成する方法は私には明らかではありません。より良いテストを見つけることができますか?

4

1 に答える 1

4

本当に素晴らしいテストは見つかりませんでしたが、アーキテクトによる微調整の兆候がさらにいくつかあります。

まず、という名前のパッケージをロードしますrj。を使用してこれをテストできます

"package:rj" %in% search()

次に、デフォルトのグラフィックス デバイスをオーバーライドします ( を参照getOption("device"))。これは無名関数なので、名前でテストすることはできませんが、引数の値でや などnameの他のデバイスと区別する必要があると思います。windowspng

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

これらの 2 つのテストを組み合わせることで、Architect を実行しているかどうかを確認するのにかなり正確になります。

is_architect <- function()
{
  "package:rj" %in% search() &&
  !is.null(device_name <- formals(getOption("device"))$name) &&
  device_name == "rj.gd"
}
于 2014-12-01T10:41:44.073 に答える