如何在R中从控制台读取单个字符(不返回)?

如何在R中从控制台读取单个字符(不返回)?,r,R,刚开始使用R。和任何语言一样,我希望能够以交互方式快速地完成一个程序 我通常写(伪代码) q代表退出,a代表追加,它们都在我左手的正下方,在键盘上,所以速度越快越好 我在R中看到我可以使用 char=readline("Type a character and hit Enter") 但我当然得按回车键。有没有一种方法可以在R中获得一个字符?不是对您的问题的直接回答,但是您可以使用debug来获得您想要的行为。如果您有一个要测试的函数,则调用debug(myfunction)设置R的调试器,以

刚开始使用R。和任何语言一样,我希望能够以交互方式快速地完成一个程序

我通常写(伪代码)

q代表退出,a代表追加,它们都在我左手的正下方,在键盘上,所以速度越快越好

我在R中看到我可以使用

char=readline("Type a character and hit Enter")

但我当然得按回车键。有没有一种方法可以在R中获得一个字符?

不是对您的问题的直接回答,但是您可以使用
debug
来获得您想要的行为。如果您有一个要测试的函数,则调用
debug(myfunction)
设置R的调试器,以便下次调用
myfunction()
时,它一次执行一行。如果在调试器中按enter键,则调试器将逐步进入函数的下一行。如果要检查函数作用域中的任何数据,或运行任何其他任意R代码,也可以这样做,因为调试器提供对所有常规R函数的访问


提示用户输入一个字符并不是您想要做的事情,但对于调试来说,我认为这更强大。

一种方法显示在
sudoku::playSudoku
函数中。在windows上,
getGraphicsEvent
函数为键盘输入提供回调;在其他设备上,您可以使用Tk小部件

但是,需要打开一个图形设备

以下是windows的一个示例:

dev.new()
getGraphicsEvent(
    "", 
    onKeyb=function(x) 
      if(tolower(x)=="q") 
        return(1) 
      else 
        cat("you pressed a key.\n")
)

我知道有些事情是由人来完成的,但我想知道你是否不能设置规则来处理你的问题,而不是手动检查元素。这只是标准的调试技术。我宁愿只用一只手放在笔记本电脑上。显然,如果不能做到这一点,它就不是语言的破坏者。只是一种轻微的烦恼。到目前为止,我真的比我预期的更喜欢R。我的想法是,如果有一条规则需要你做出决定,那么可以对该规则进行编程——将听起来像是一种标准调试技术的东西自动化。将
浏览器()
?或者使用编辑器的键盘快捷键一次执行一行。好的。谢谢但我还是想知道这是否可行。
dev.new()
getGraphicsEvent(
    "", 
    onKeyb=function(x) 
      if(tolower(x)=="q") 
        return(1) 
      else 
        cat("you pressed a key.\n")
)