我在名为“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-name
和ess-rterm-version-paths
但我失败了。 ESS找不到任何东西。
我使用emacs 24.3.1,ESS 13.05和R 2.15。目前我的.emacs文件只包含一行,所以这不应该是一个问题:
(require 'ess-site)
如何让ESS找到我的Rterm.exe?
答案 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)