ESS在Windows上找不到Rterm.exe

7
我将R安装在名为“X:\alphaAndOmega\R\R”的目录中。因此,Rterm.exe(32位版本)位于“X:\alphaAndOmega\R\R\bin\i386”中。我知道这不是一个“标准的R目录”,像R-3.0.0那样的“标准的R目录”可以很容易地被ESS识别(至少如果我将它们添加到Windows的PATH变量中)。
我尝试在我的.emacs文件中自定义内容,让ESS在非标准目录中寻找Rterm.exe,但我没能实现。我完全不懂emacs,我试图尝试一些以下命令:
"inferior-R-program-name"和"ess-rterm-version-paths"
但我失败了。 ESS找不到任何东西。
我使用emacs 24.3.1、ESS 13.05和R 2.15。目前,我的.emacs文件只包含一行,所以这不应该是问题:
(require 'ess-site)
我该怎么做才能使ESS找到我的Rterm.exe?
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捆绑包,我可以全心全意地推荐它,因为它非常易用。


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

12.09中的更改/新功能:

ESS[R]:在Windows上,现在有一个新的可定制的变量(当前称为ess-directory-containing-R),可以告诉ESS在哪里查找Rterm.exe可执行文件。变量的名称和可以使用的值都处于beta版本,并且可能会更改。在此变量之前,ESS仅在默认安装目录中搜索。现在设置此变量可以告诉ESS如何在其他位置安装Rterm.exe可执行文件。

如果我记得正确,在加载ess-site.el之前需要执行此操作;无论如何,这就是我在我的.emacs文件中拥有的内容,这可以很好地找到存储在"C:/R/"下的所有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")

3

当我遇到这个问题时,设置包含R目录的ess-directory-containing-R变量并没有起作用。另外,在另一台安装了正常工作的ess-emacs的机器上进行“describe-variable”操作时,它的值为空,因此我认为那不是正确的解决方法。

真正起作用的方法是在Windows环境中设置PATH变量指向Rterm.exe所在的目录,然后重新启动emacs。


我在Windows 10上使用Spacemacs完成了这个操作,而没有更改任何.el文件。 - janicebaratheon

0

在Windows上默认安装ESS(当前版本为17.11)和R(3.4.4)时,运行M-x R尝试在exec-path中执行Rterm.exe,如果在此处未找到,则会失败。应使用自动生成的运行程序,例如 M-x R-3.4.4-64bit或简单地使用M-x R-newest

要使用非标准的R位置,请将ess-directory-containing-R设置为基本目录以搜索R安装。这需要在加载ess-site之前完成,因此可能需要在更新初始文件后重新启动emacs。这将允许自动生成的运行程序被创建。


0
设置变量ess-directory-containing-R需要注意Vincent Goulet的Windows发行版,这在Dirk的答案中提到。我已经使用它将近20年了。以下是我关于处理此问题的“提示”文件的摘录。
如果R安装在非标准位置,则需要告诉ESS在哪里查找,通过将变量ess-directory-containing-R设置为各个版本的R所在树的根目录。问题在于,“site-start.el”在用户的“.emacs”之前执行(请参阅Emacs手册的“Emacs初始化文件”部分),因此仅在“.emacs”中设置ess-directory-containing-R是不够的。我不愿意像Josh的答案那样再次加载“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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接