答えて
すでに誰かがコメントに書いている通り、readline()
より前に猫を使う必要はありません。単に書く:
readline(prompt="Press [enter] to continue")
あなたが変数に代入すると、コンソールに印刷されたリターンを望んでいない、invisible()
でreadline()
をラップしたくない場合は、次の
invisible(readline(prompt="Press [enter] to continue"))
これは最高の答えです。 –
方法1
ウェイツコンソールで、[Enter]を押すまで:関数に
cat ("Press [enter] to continue")
line <- readline()
ラッピング:
readkey <- function()
{
cat ("Press [enter] to continue")
line <- readline()
}
この関数はConsole.ReadKey()
の最高同等ですC#で。あなたは、キーボードの[Enter]キーストロークを入力するまで
方法2
ポーズ。この方法の欠点は、数値ではないものを入力するとエラーが表示されることです。
print ("Press [enter] to continue")
number <- scan(n=1)
機能へのラッピング:
readkey <- function()
{
cat("[press [enter] to continue]")
number <- scan(n=1)
}
方法3
あなたは、グラフ上の別の点をプロットする前に、キーの押下を待つしたい想像してみてください。この場合、getGraphicsEvent()を使用して、グラフ内のキー入力を待つことができます。
このサンプル・プログラムでは、概念を示しています。ここ
readkeygraph <- function(prompt)
{
getGraphicsEvent(prompt = prompt,
onMouseDown = NULL, onMouseMove = NULL,
onMouseUp = NULL, onKeybd = onKeybd,
consolePrompt = "[click on graph then follow top prompt to continue]")
Sys.sleep(0.01)
return(keyPressed)
}
onKeybd <- function(key)
{
keyPressed <<- key
}
xaxis=c(1:10) # Set up the x-axis.
yaxis=runif(10,min=0,max=1) # Set up the y-axis.
plot(xaxis,yaxis)
for (i in xaxis)
{
# On each keypress, color the points on the graph in red, one by one.
points(i,yaxis[i],col="red", pch=19)
keyPressed = readkeygraph("[press any key to continue]")
}
あなたは、キーボード上の次のキーストロークを待って、色付きのポイントの半分で、グラフを見ることができます。
互換性:win.graphまたはX11のいずれかの環境でテスト済みです。 Windows 7 x64とRevolution R v6.1で動作します。 RStudioの下では動作しません(win.graphを使用しないため)。ここで
方法1は 'readline'に' prompt'引数を使用することで短縮できます。方法2は、 'what =" "'が 'scan'への呼び出しに追加された場合には、何らかの入力(数字だけでなく)で動作します。 'getGraphicsEvent'は、特定のプラットフォーム上の特定のグラフィックデバイスでのみ動作します(ただし、これらのデバイスのいずれかを使用している場合はうまく動作します)。 –
'readline'と' scan'はLinuxのコマンドラインで動作しません –
この関数(方法1)をループで使用していて、ループを止めたい場合は、次のようにしてください: 'if(line ==" Q ")stop()' –
小さなウィンドウを開いて、[続行]ボタンをクリックするか、(小さなウィンドウがまだフォーカスがある状態で)任意のキーを押すのいずれかになるまで待ちます(tcltkパッケージを使用して)少し機能ですそれはあなたのスクリプトを続行させます。
library(tcltk)
mywait <- function() {
tt <- tktoplevel()
tkpack(tkbutton(tt, text='Continue', command=function()tkdestroy(tt)),
side='bottom')
tkbind(tt,'<Key>', function()tkdestroy(tt))
tkwait.window(tt)
}
はちょうどあなたがスクリプトを一時停止することをどこでもあなたのスクリプトでmywait()
を置きます。
これはtcltkをサポートしているプラットフォーム(これは一般的なものだと思います)でも動作し、キー入力(入力だけでなく)に応答し、スクリプトがバッチモードで実行されても機能しますバッチモードで一時停止するので、そこにいなければ永遠に待機します。クリックされていないかキーが押されている場合は、設定した時間が経過してもタイマーを続けることができます。
どのキーが押されたかは返されませんが、変更することができます。
素晴らしいです。しかし、何らかの理由で(何らかの理由で)何らかの理由でRStudio-Server Webクライアント上で警告が出されません。(構造体エラー(.External(.C_dotTclObjv、objv)、class = "tclObj"): [tcl]無効なコマンド名 "toplevel ")') – milia
@ミリア、それは正しいです。 tcltkに基づくコードはローカルマシン上で実行する必要があり、RStudio-Serverでは実行されません。 –
RとRscriptはともに''
をreadlineに送り、非対話モードでスキャンします(? readline
参照)。解決方法は、スキャンを使用してstdin
を強制的に実行することです。
cat('Solution to everything? > ')
b <- scan("stdin", character(), n=1)
例:
$ Rscript t.R
Solution to everything? > 42
Read 1 item
驚くばかり!これは[私の問題](https://stackoverflow.com/questions/47294283/how-to-run-an-r-script-and-show-a-plot)をほぼ解決します。コンソールがテキスト+ Returnを待っていなくても、最初のキー押しに反応してもいいです(「何かキーを押し続ける」のように)。 – Vorac
- 1. perlスクリプトでキーを押すのを待つ方法は?
- 2. Clojureでキーを押すのを待つ方法
- 3. ユーザーがどのキーを押しても20秒待つ方法は?
- 4. プログラムでダイヤルパッドのキーを押す方法
- 5. キャプチャ方法GtkEntryでEnterキーを押す
- 6. メモ帳でEnterキーが押されるまで待つ
- 7. セレンのキーを2回押す方法
- 8. キー押下でjavascriptを停止する方法(つまりESCキー)
- 9. ユーザがConsole.ReadLine()でenterを押すのを待つのではなく、1キーで入力を受け入れる
- 10. コンソールのキー押下を検出する方法は?
- 11. LWUIT形式のキー押下イベントを検出する方法は?
- 12. キーを押してチェックボックスをオンにする方法は?
- 13. Enterキーを押してonBlur()イベントをトリガーする方法は?
- 14. TextBoxで押されたENTERキーを取り込む方法は?
- 15. Kinectで手のひら波をキー押しする方法
- 16. jQueryで複数のキー押しとイベントをトリガーする方法
- 17. キュウリのテストケースでEnterキーを押す方法
- 18. Enterキーを押すか、10秒間待ち続ける
- 19. ウェブページでスクリプトを入力してEnterキーを押す方法
- 20. Enterキーを変換する方法タブキーを押すキーを押すWebページの場合
- 21. テキストフィールドの入力を待つ方法は?
- 22. ダウンロードの完了を待つ方法は?
- 23. 押されたキーを記録する方法は?
- 24. キー押下確認とUIアクションのメンテナンスを行う方法は?
- 25. SWT ListViewerでCtrlキーを押して放す方法
- 26. jQuery:テキストボックス内でTABキー押下をキャプチャする方法
- 27. Chrome content_script:jQueryを待つ方法
- 28. WebClient.UploadStringAsyncリクエストを '待つ'方法
- 29. センサーデータを待つ方法
- 30. Retrofit:レスポンスを待つ方法
は、あなたが受け入れることができる任意の答えを見つけたことがありますか? –