2012-04-02 52 views
3

剛剛開始使用R.與任何語言一樣,我希望能夠以交互方式快速執行程序。如何從R中的控制檯讀取單個字符(不帶RETURN)?

我平時喜歡寫東西(僞代碼)

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

q是用於戒菸和用於追加,他們是在鍵盤上在我的左手都是正確的,所以這是儘可能快。

我R中看到,我可以使用

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

但我當然要回車。有沒有一種方法可以在R中獲得角色?

+1

我明白,有些東西還是由人執行的,但我不知道,如果你不能建立規則來處理你的問題,而不是通過要素手動去。 – 2012-04-02 17:02:15

+0

這只是標準的調試技術。我寧願只用一隻手在我的筆記本電腦上。如果無法完成,顯然不是該語言的一個破壞者。只是一個溫和的煩惱。到目前爲止,我非常喜歡R比我想象的要好得多。 – Dave31415 2012-04-02 17:18:02

+0

我的想法是,如果有一條規則可以做出決定,那麼可以對規則進行編程 - 使聲音成爲標準調試技術的自動化。 – 2012-04-02 17:23:16

回答

6

不直接回答你的問題,但你可以使用debug來獲得你想要的行爲。如果你有一個你想測試的功能,調用debug(myfunction)設置R的調試器,這樣當你下次調用myfunction()時,它一次執行一行。如果你在調試器裏面敲入回車,它會跳到函數的下一行。如果您想檢查函數的範圍內的任何數據,或者運行任何其他任意R代碼,您也可以這樣做,因爲調試器提供對所有常規R函數的訪問。

不完全是你想要提醒用戶的單個字符,但爲了調試,我認爲這是更強大。

+0

好的。謝謝。但我仍然想知道這是否可能。 – Dave31415 2012-04-02 18:44:53

0

sudoku::playSudoku函數中顯示了一種方法。在窗口上,getGraphicsEvent函數爲鍵盤輸入提供回調;在其他設備上,您可以使用Tk小部件。

但是,需要打開一個圖形設備。

下面是Windows的例子:

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