如何在emacs中指定ESS会话打开的R版本?

如何在emacs中指定ESS会话打开的R版本?,r,emacs,environment-variables,ess,R,Emacs,Environment Variables,Ess,当我想在emacs中打开R会话时,我使用M-xr 但是,我们的服务器在/usr/bin/R中同时具有R2.12和/usr/local/bin/R中具有R2.15。实际上,如果我问R在哪里,我会得到以下信息: $ whereis R R: /usr/bin/R /usr/local/bin/R /usr/local/bin/R2.15 /usr/local/bin/R2.12 /usr/local/bin/R2.7 /usr/include/R /usr/share/R /usr/share/m

当我想在emacs中打开R会话时,我使用
M-xr

但是,我们的服务器在/usr/bin/R中同时具有R2.12和/usr/local/bin/R中具有R2.15。实际上,如果我问
R在哪里,我会得到以下信息:

$ whereis R
R: /usr/bin/R /usr/local/bin/R /usr/local/bin/R2.15 /usr/local/bin/R2.12 
/usr/local/bin/R2.7 /usr/include/R /usr/share/R /usr/share/man/man1/R.1.gz
当我尝试从.bashrc导出“R_HOME=/usr/local/bin/R2.15”时,emacs说“警告:忽略R_HOME的环境值”


有没有办法选择启动哪个R实例?目前,当我在命令行中键入R时,2.15将启动,即使
M-xr
启动2.12。

非ESS的答案是确保路径相同,并且首先是您想要的版本。您启动的shell与涉及Emacs的启动之间似乎存在差异。您可以从shell及其路径启动Emacs

ESS的答案可能包括设置一些神奇的变量。。。在Windows上,我们通常直接设置二进制文件。这里的lisp代码表示:

;; 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
所以它应该能起作用。我只在我的路径中保留了一个R,另外一个不在其中,所以我不能在这里为您测试这个。但是试着摆弄一下
ess-r-version
和/或
subsier-r-program-name

添加
(setq默认的subsier-r-program-name“R2.15”)
就行了!谢谢你帮我解决这个问题。在windows上,这是可行的(根据安装情况将路径调整为R,避免路径中出现空格):(添加到列表“加载路径”c:/emacs/site lisp/ess/)(自动加载“R-mode”ess site.el“ess”t)(添加到列表“自动模式列表”(“\\.R$”.R-mode))(setq-subsier-R-program-name“c:/math/R323/bin/R”);到R的任何其他路径都将从Windows 7上挂起emacs-24.5.1