首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户输入和ESS

用户输入和ESS
EN

Stack Overflow用户
提问于 2010-12-05 04:58:43
回答 2查看 379关注 0票数 2

当您要求ESS从缓冲区(C-c、C-b或类似)评估以下内容时

代码语言:javascript
复制
par(ask=TRUE)
plot(1,1)
plot(2,1)

解释器进入无限循环,因为ESS使用参数--no-readline启动R会话。循环可以用C-g中断,但是有没有办法让解释器真正请求用户输入呢?

EN

回答 2

Stack Overflow用户

发布于 2010-12-08 11:23:28

一种解决方案是编辑ess-r-d.el并删除提供给R的硬编码--no-runtime选项,这是最新实现的第127行。

变化

代码语言:javascript
复制
  (let* ((r-always-arg
      (if (or ess-microsoft-p (eq system-type 'cygwin))
          "--ess "
        "--no-readline "))

代码语言:javascript
复制
  (let* ((r-always-arg
      (if (or ess-microsoft-p (eq system-type 'cygwin))
          "--ess "))

如果存在编译版本,则必须编译.el以生成并替换二进制.elc文件。

文件可能是(目录的位置取决于您的操作系统)

site-lisp目录中的

  • 。编辑.elc.
  • if (^X^F)中的.el文件,然后执行M-x byte-compile-file,以生成从lisp目录中的整个zip/tar源码包安装的emacs。在这种情况下,在更改之后,先执行make,然后执行make install.

当然,您需要拥有对.el.elc文件的write访问权限。

如果您对.el文件的编译感到不舒服,可以简单地删除它(.elc),只使用.el版本(应该只有很小的性能差异)。

票数 1
EN

Stack Overflow用户

发布于 2010-12-05 06:50:24

(从谷歌和RSiteSearches收集的策略):

您是否在任何会话窗口中看到提示:“点击Return”?如果是的话..。命中。

如果没有,请尝试在绘图窗口中单击。

如果失败了,你应该用c-G重新获得控制权。

编辑:另一个策略,诚然不能解决ESS的非交互性问题:如果你想等待用户输入,那么可以使用readLines:

代码语言:javascript
复制
input=file("stdin")
print(readLines(input,1))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4355798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档