1

コードをしばらく一時停止しようとしています。プロットを観察する時間です。

私は試した:

print('A')
something = readline("Press Enter")
print('B')
print('C')

、その後、一時停止はありません。行print('B')は readline に送られ、に格納されるため、画面に表示されるsomethingだけです。との間に空の行を追加すると、画面に出力されますが、コンソールではユーザーが続行する前に Enter キーを押すことができないことに注意してください。ACSomething = readline("Press Enter")print("B")print("B")

そして私は試しました:

print('A')
Sys.sleep(3)
print('B')
print('C')

print('A')プログラムは開始する前に 3 秒待機し、 と の間で一時停止せずに「通常どおり」実行しprint('B')ます。

私は何を誤解していますか?


これが私のRバージョンです:R 3.1.1 GUI 1.65 Snow Leopard build (6784)

4

1 に答える 1

1

問題readlineは、スクリプトを R コンソールに貼り付けるか、Rstudio などから実行すると、redline関数が読み込まれ、スクリプトの次の行がコンソール エントリとして読み込まれることです。somethingprint('B)

これを回避する簡単な方法は、コード全体を関数に貼り付けてから、関数を呼び出して実行することです。だから、あなたの場合:

myscript = function(){

  print('A')
  something = readline(prompt = "Press Enter")
  print('B')
  print('C')

}

myscript()

私にとってのこれの出力(Rstudioで、Rバージョン3.1.1を使用):

[1] "A"
Press Enter
[1] "B"
[1] "C"

これは私にとってはちょっとしたハックのようにいつも感じていましたが、基本的にはreadline のドキュメントがその例で推奨しているものです。

コードで使用sleepしたことがないため、お手伝いできません。

コメントに基づいて編集して明確にする:これはmyscript()、スクリプトの最後の行である場合、またはスクリプトを実行して関数を生成した後にコンソールに手動で入力した場合にのみ機能します。そうしないと、前と同じ問題が発生します。次のコード行が自動的に入力されます。

于 2014-11-04T19:14:53.517 に答える