Emacs ESS在windows上找不到Rterm.exe

Emacs ESS在windows上找不到Rterm.exe,emacs,ess,Emacs,Ess,我将R安装在一个名为“X:\alphaAndOmega\R\R”的目录中。因此Rterm.exe(32位版本)位于“X:\alphaAndOmega\R\R\bin\i386”中。我知道它不是“标准R目录”,ESS很容易识别“标准R目录”,如R-3.0.0(至少如果我在Windows中将它们添加到PATH变量中) 我尝试以某种方式自定义.emacs文件,ESS将在我的非标准目录中查找Rterm.exe,但我无法这样做。我是emacs的新手,我尝试使用以下一些命令: subsier-R-progr

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

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

subsier-R-program-name
ess rterm版本路径

但我失败了。ESS什么也没找到

我使用emacs 24.3.1、ESS 13.05和R2.15。目前我的.emacs文件只包含一行,因此这应该不是问题:

(需要ess站点)


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

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

我刚刚在我的工作机器上进行了检查,默认情况下,从
$PATH
中可以找到
Rterm.exe
。我确实使用了我可以衷心推荐的,因为“它只起作用。”

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

12.09中的更改/新功能:

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

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

(setq ess-directory-containing-R“c:)
;; 添加到ESS识别的前缀列表中。
;; 执行M-x R后,将显示匹配的版本
(setq ess-r-versions'(“r-1”“r-2”“r-3”“r-current”“r-devel”“r-patched”))
(加载“C:/ProgramFiles/GNU Emacs 23.3/site lisp/ess/lisp/ess site.el”)
;; 设置默认的R版本(即通过键入M-x R启动的版本)
(setq-R-program-name“c:/R/R-current/bin/i386/Rterm.exe”)

出现此问题时,设置ess-directory-containing-R变量不起作用。此外,当我在另一台机器上对它进行“描述变量”时,它的值是零,所以我认为这是不对的


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

在Windows上默认安装ESS(当前为17.11)和R(3.4.4),运行M-x
R
尝试在
exec路径中执行Rterm.exe
,如果在那里找不到它,则会失败。应改用自动生成的转轮,例如M-x
R-3.4.4-64位
或简单的M-x
R-latest


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

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

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

如果各种R版本安装在“c:/myPrograms/R/”下, 然后,变量的设置应为“c:/myPrograms”(即不带 尾随“/R”)。因为这需要在加载ESS之前完成,所以我将以下行添加到V.Goulet的站点文件中, “path\to\emacs\share\emacs\site lisp\site start.el”

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

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

我在Windows10上使用spacemacs完成了这项工作,没有更改任何.el文件。
(setq ess-directory-containing-R "c:/myPrograms")
   ;; Load ESS.
   (require 'ess-site)