4

这是我要询问的两个注册表项。**

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

当 R 从命令行(或从emacsstatconnDCOM)启动时,它使用 WindowsPath环境变量中首先出现的任何版本。相比之下,双击*.Rdata文件使用HKEY_CLASSES_ROOT.

但是这两个HKEY_LOCAL_MACHINE条目是什么时候使用的,或者是什么时候使用的呢?

编辑: Brian Diggs 指向一组*.bat确实使用(并修改)这些注册表项的 Windows 文件,但我仍然对是否有更接近“核心”R 的东西使用这些感兴趣。(我希望答案是“不”。)


** 如R for Windows FAQ中所述,这些条目可以在安装过程中(通过单击“在注册表中保存版本号”)或稍后从命令行(通过RSetReg.exe在内部键入$RHOME\bin)设置。

4

2 回答 2

3

主要编辑:

看起来这些注册表项主要是供外部应用程序使用的。

这就是我这么认为的原因。

  1. R 源代码中的grep'ingHKEY_LOCAL_MACHINE仅在三个文件中出现了四个命中。文件 -- "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 环境空间”或“Windows API 环境空间”中找到它时才在注册表中搜索。

  3. get_R_HOME反过来,只出现在另外两个文件中"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/"是使“将 R DLL 链接到其他应用程序”成为可能。)

  4. R 的 *NIX 起源和对可移植性的强调使得任何接近 R 核心功能的东西都不太可能依赖于注册表项。(这个项目显然更具投机性。)

除非我听到其他消息,否则这足以让我相信注册表项的唯一目的是为外部应用程序提供指针,尤其是那些使用 R 嵌入式实例的应用程序。

于 2012-09-14T19:58:18.407 回答
2

使用这些的一组程序是R 批处理文件,它声明

这些程序通过 (1) 检查环境变量 (R_HOME、R_MIKTEX、R_TOOLS) 或 (2) 如果未设置,则在注册表中设置 R 的版本(以及 R Tools 和 miktex 的版本)。

于 2012-09-14T18:07:26.610 回答