4

これが私が尋ねている2つのレジストリエントリです。**

HKEY_LOCAL_MACHINE\Software\R-core\R\Current Version
HKEY_LOCAL_MACHINE\Software\R-core\R\version\InstallPath

Rがコマンドラインから(またはemacs、またはstatconnDCOMから)起動されると、WindowsのPath環境変数に最初に表示されるバージョンが使用されます。対照的に、ファイルをダブルクリックすると*.Rdata、の関連するファイルの関連付けエントリが指すバージョンが使用されますHKEY_CLASSES_ROOT

しかし、いつ、または何によって2つのHKEY_LOCAL_MACHINEエントリが使用されますか?

編集: Brian Diggsは、これらのレジストリエントリを使用(および変更)するWindowsファイルのバンドルを指して*.batいますが、「コア」Rに近いものがこれらを使用するかどうかに関心があります。(答えが「いいえ」であることを願っています。)


** R for Windows FAQで説明されているように、これらのエントリは、インストール中([レジストリにバージョン番号を保存]をクリック)または後でコマンドラインRSetReg.exeから(内から入力して$RHOME\bin)設定できます。

4

2 に答える 2

3

主な編集:

これらのレジストリエントリは、主に外部アプリケーションで使用するために存在するようです。

これが私がそう思う理由です。

  1. RソースでgrepHKEY_LOCAL_MACHINEを実行すると、わずか3つのファイルで4つのヒットが発生します。ファイル-、、、"extra.c"および"RSetReg.c"-"rhome.c"はすべて、R-2.15.0/src/gnuwin/またはそのサブディレクトリにあります。

  2. 関連する発生R-2.15.0/src/gnuwin/rhome.cは、C関数によって使用されるのであるように見えますget_R_HOME。その関数は次のように設計されています

    / *環境またはレジストリからR_HOMEを取得します:組み込みアプリで使用されます* /

    R_HOMEまた、「C環境スペース」または「WindowsAPI環境スペース」でまだ検出されていない場合にのみレジストリを検索します。

  3. get_R_HOME、は、他の2つのファイル、、、およびにのみ表示され"R-2.15.0/src/gnuwin/embeddedR.c"ます"R-2.15.0/src/gnuwin/front-ends/rtest.c"。(常駐readmeファイルによると、の役割は"R-2.15.0/src/gnuwin/front-ends/"「RDLLを他のアプリケーションにリンク[...]」できるようにすることです。)

  4. Rの*NIXの起源と移植性の重視により、Rのコア機能に近いものがレジストリエントリに依存する可能性は低いように思われます。(このアイテムは明らかに投機的です。)

特に断りのない限り、レジストリエントリの唯一の目的は、外部アプリケーション、特にRの埋め込みインスタンスを使用するアプリケーションへのポインタを提供することであると私に納得させるのに十分です。

于 2012-09-14T19:58:18.407 に答える
2

これらを使用するプログラムの1つのセットは、次のように記述されたRバッチファイルです

これらのプログラムは、(1)環境変数(R_HOME、R_MIKTEX、R_TOOLS)を調べるか、(2)設定されていない場合はレジストリで検索することにより、Rのバージョン(およびR Toolsとmiktexのバージョン)を設定します。

于 2012-09-14T18:07:26.610 に答える