你怎么从R中的控制台读取单个字符(没有RETURN)?

时间:2012-04-02 16:56:09

标签: r

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

我经常写一些像(伪代码)

的东西
get_char(char)
if (char == 'q') {return}
if (char == 'a') {list.append(blah)}
if (char is anything else) {just move along}

q用于退出,a用于追加,它们都在我的左手在键盘上,所以这是尽可能快。

我在R中看到我可以使用

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

但当然我必须输入。有没有办法在R中找到一个角色?

2 个答案:

答案 0 :(得分:6)

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

对于用户提示单个字符不是很想做什么,但是对于调试我觉得这个功能要强大得多。

答案 1 :(得分:0)

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