2012-04-02 14 views
3

ちょうどRを使い始めました。どんな言語と同様に、私はプログラムを対話的かつ迅速に踏み出すことができるようにしたいと考えています。R(RETURNなし)のコンソールから1文字をどのように読み込みますか?

私は通常ので、これは可能な限り高速である(擬似コード)

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

qが終了するためのもので、アペンドのためのものであり、彼らは、キーボードの上に私の左手の下に両方の権利をしているようなものを書きます。

私は

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

を使用することができますが、もちろん、私は入るヒットする必要がRで参照してください。 Rのキャラクターを取得する方法はありますか?

+1

私はいくつかのものは、より良い人間によって行われていますが、あなたの問題に対処するためのルールを設定するのではなく、手動で要素を通過することができなかった場合、私は不思議されていることを理解しています。 –

+0

これは標準的なデバッグ手法です。私はちょうど私のラップトップに片手を使っています。明らかに、もしそれができないならば、その言語のための取引遮断者ではない。ほんの穏やかな迷惑。これまでのところ、Rは私が期待していたよりはるかに優れています。 – Dave31415

+0

私が考えているのは、決定を下すルールがある場合、そのルールをプログラムすることができます。つまり、どのサウンドを標準的なデバッグ手法にするかを自動化します。 –

答えて

6

あなたの質問に直接答えはありませんが、debugを使用して必要な動作を得ることができます。テストする関数がある場合は、debug(myfunction)を呼び出すとRのデバッガが設定されるので、次にmyfunction()を呼び出すと、一度に1行ずつ実行されます。デバッガ内でEnterキーを押すと、関数の次の行に移動します。デバッガがすべての通常のR関数へのアクセスを提供するので、関数のスコープ内のデータを調べたり、他の任意のRコードを実行したりすることもできます。

ユーザーからの1文字の入力を求めているが、デバッグのために何をしたいのかというと、これはずっと強力だと思います。

+0

Ok。ありがとう。しかし、私はまだこれが可能かどうかを知りたいと思っています。 – Dave31415

0

これを行う1つの方法は、sudoku::playSudoku機能に示されています。ウィンドウでは、getGraphicsEvent関数はキーボード入力用のコールバックを提供します。他のデバイスでは、Tkウィジェットを使うことができます。

ただし、グラフィックデバイスが開いている必要があります。ここで

は、Windows用の例です。

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