ESS在Windows上找不到Rterm.exe

时间:2013-05-31 15:21:21

标签: emacs ess

我在名为“X:\ alphaAndOmega \ R \ 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-nameess-rterm-version-paths

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

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

(require 'ess-site)

如何让ESS找到我的Rterm.exe?

5 个答案:

答案 0 :(得分:5)

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。我确实使用Emacs/ESS/AucTeX bundle by Vincent Goulet,我可以全心全意地推荐它为“它只是有效。”

答案 1 :(得分:3)

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

  

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")

答案 2 :(得分:1)

当我遇到此问题时,设置包含ess-directory-R的变量不起作用。此外,当我在其上执行'describe-variable'时,在另一台上有正确工作的ess-emacs的机器上,值为零,所以我不认为这是正确的。

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

答案 3 :(得分:0)

在Windows上默认安装ESS(当前为17.11)和R(3.4.4),运行Mx 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。这将允许创建自动生成的跑步者。

答案 4 :(得分:0)

设置变量ess-directory-containing-R需要特别注意 Vincent Goulet的Windows发行版,在Dirk的答案中提到。在过去的二十多年中,我一直在使用它。以下是我的“提示”文件中有关此操作的摘录。

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

如果在“ c:/ myPrograms / R /”下安装了各种R版本, 那么该变量的设置应为“ c:/ myPrograms”(即不包含 尾随“ / R”)。由于需要在加载ESS之前完成此操作,因此我将以下行添加到V. Goulet的站点文件中, “路径\ to \ emacs \ share \ emacs \ site-lisp \ site-start.el”,

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

在加载ESS之前,即文件中以下几行之前:

   ;; Load ESS.
   (require 'ess-site)