7

我将 R 安装在一个名为“X:\alphaAndOmega\R\R”的目录中。所以 Rterm.exe(32 位版本)位于“X:\alphaAndOmega\R\R\bin\i386”。我知道它不是“标准 R 目录”,并且“标准 R 目录”,如 R-3.0.0 很容易被 ESS 识别(至少如果我将它们添加到 Windows 中的 PATH 变量中)。

我尝试以某种方式自定义我的 .emacs 文件,即 ESS 会在我的非标准目录中查找 Rterm.exe,但我无法这样做。我对 emacs 完全陌生,我尝试使用以下一些命令:

inferior-R-program-nameess-rterm-version-paths

但我失败了。ESS 没有找到任何东西。

我使用 emacs 24.3.1、ESS 13.05 和 R 2.15。目前我的 .emacs 文件只包含一行,所以这应该不是问题:

(require 'ess-site)

我该怎么做才能让 ESS 找到我的 Rterm.exe?

4

5 回答 5

6

中实际上只有一个配置设置ess-site.el;我过去用过那个。这是来自ess-site.el但请注意它已被注释掉:

;; If you wish to call other versions of R on a Unix system, ESS 
;; should auto-detect other versions of R, according to matches to the   
;; variable `ess-r-versions' as described in its docstring.  Consider   
;; changing that variable rather than changing inferior-R-program-name  
;; if your version of R is not already auto-detected.                  
;;(setq-default inferior-R-program-name "R")        ; unix systems    
;;(setq-default inferior-R-program-name "Rterm")    ; MS Windows, see below for path
;;(setq-default inferior-R-program-name "C:\\Program Files\\R\\R-2.5.0\\bin\\Rterm.exe")

我刚刚检查了我的工作机器,Rterm.exe默认情况下从$PATH. 我确实使用了Vincent Goulet 的 Emacs/ESS/AucTeX 捆绑包,我可以全心全意地推荐它,因为“它可以正常工作”。

于 2013-05-31T17:06:11.890 回答
3

要将 ESS 指向非标准 R 目录,请设置变量ess-directory-containing-R. (这个方便的变量是一个相对较新的功能。)引用ESS 手册

12.09 中的更改/新功能:

ESS[R]:在 Windows 上,现在有一个新的可自定义变量(目前称为 ess-directory-containing-R)来告诉 ESS 在哪里查找 Rterm.exe 可执行文件。变量的名称和它可以采用的值都处于测试阶段并且可能会发生变化。在此变量之前,ESS 仅在默认安装目录中进行搜索。设置这个变量现在告诉 ESS 在安装在其他地方时如何找到 Rterm.exe 可执行文件。

如果我没记错的话,这需要在加载之前完成ess-site.el;无论如何,这就是我的 .emacs 文件中的内容,它可以很好地找到我所有的 R 版本,这些版本都存储在"C:/R/"

(setq ess-directory-containing-R "c:")
;; Add to list of prefixes recognized by ESS. 
;; Matching versions will appear after doing M-x R <TAB> <TAB> 
(setq ess-r-versions '("R-1" "R-2" "R-3" "R-current" "R-devel" "R-patched"))
(load "C:/Program Files/GNU Emacs 23.3/site-lisp/ess/lisp/ess-site.el")

;; Set default R version, (i.e. the one launched by typing M-x R <RET>)
(setq inferior-R-program-name "c:/R/R-current/bin/i386/Rterm.exe")
于 2013-05-31T17:21:01.220 回答
3

当我遇到这个问题时,设置 ess-directory-containing-R 变量不起作用。此外,当我在另一台具有正常工作的 ess-emacs 的机器上对其进行“描述变量”时,该值为零,所以我认为这是不对的。

DID 的工作是在 Windows 环境中设置 PATH 变量以指向 Rterm.exe 所在的目录,然后重新启动 emacs。

于 2016-07-05T15:05:51.760 回答
0

在 Windows 上默认安装 ESS(当前为 17.11)和 R(3.4.4)时,运行 Mx会R尝试在您的系统中执行 Rterm.exe,exec-path如果在那里找不到它会失败。应该使用自动生成的跑步者,例如。MxR-3.4.4-64bit或简单的 Mx R-newest

使用设置为基本目录的非标准 R 位置ess-directory-containing-R来搜索 R 安装。这需要在ess-site加载之前完成,因此可能需要在更新您的 init 文件后重新启动 emacs。这将允许创建自动生成的跑步者。

于 2018-09-13T10:37:25.103 回答
0

设置变量ess-directory-containing-R需要注意 Dirk 的回答中提到的 Vincent Goulet 的 Windows 发行版。二十年来,我一直在使用它。以下是我的“提示”文件中有关处理此问题的摘录。

如果 R 安装在非标准位置,则需要告知 ESS,通过将变量设置ess-directory-containing-R为树的根来查找 R 的各种版本。问题是“site-start.el”在用户的“.emacs”之前执行(请参阅 Emacs 手册的“Emacs 初始化文件”部分),因此仅ess-directory-containing-R在“.emacs”中进行设置是行不通的。正如乔希的回答一样,我不愿意再次加载“site-start.el”。

如果各种 R 版本都安装在“c:/myPrograms/R/”下,那么变量的设置应该是“c:/myPrograms”(即没有尾随的“/R”)。由于这需要在加载 ESS 之前完成,所以我在 V. Goulet 的站点文件中添加以下行,“path\to\emacs\share\emacs\site-lisp\site-start.el”,

(setq ess-directory-containing-R "c:/myPrograms")

就在它加载 ESS 之前,即在文件中的以下行之前:

   ;; Load ESS.
   (require 'ess-site)
于 2020-03-05T13:12:58.283 回答