はgetGraphicsEventのソースコードです:
function (prompt = "Waiting for input", onMouseDown = NULL, onMouseMove = NULL,
onMouseUp = NULL, onKeybd = NULL, consolePrompt = prompt)
{
if (!interactive())
return(NULL)
if (!missing(prompt) || !missing(onMouseDown) || !missing(onMouseMove) ||
!missing(onMouseUp) || !missing(onKeybd)) {
setGraphicsEventHandlers(prompt = prompt, onMouseDown = onMouseDown,
onMouseMove = onMouseMove, onMouseUp = onMouseUp,
onKeybd = onKeybd)
}
.External2(C_getGraphicsEvent, consolePrompt)
}
ことがif (!interactive()) return(NULL)
で明示的に作られているので、それは、NULLを返し、なぜあなたが見ることができます。これはあなたの元のコードに挿入してみてください。
getGraphicsEvent2 = function (prompt = "Waiting for input", onMouseDown = NULL, onMouseMove = NULL,
onMouseUp = NULL, onKeybd = NULL, consolePrompt = prompt)
{
# if (!interactive())
# return(NULL)
if (!missing(prompt) || !missing(onMouseDown) || !missing(onMouseMove) ||
!missing(onMouseUp) || !missing(onKeybd)) {
setGraphicsEventHandlers(prompt = prompt, onMouseDown = onMouseDown,
onMouseMove = onMouseMove, onMouseUp = onMouseUp,
onKeybd = onKeybd)
}
.External2(C_getGraphicsEvent, consolePrompt)
}
environment(getGraphicsEvent2) = environment(grDevices::getGraphicsEvent)
dragplot(rnorm(1000), rnorm(1000))
kbd = function(key) {
if (key == "q") { "Quit" } else NULL }
getGraphicsEvent2("Waiting for input", onKeybd = kbd)
(つまり私は、グラフィックスデバイスとしてX11とOSX上のプロットを操作することができませんでした)機能を失うようだが、少なくともプロットはアップ状態のまま。この関数の内部コードへの呼び出しは最近変更されました(Rのソースコードを2つのバージョンで見る - R 2.6.2のこの関数のコードは、例えばR-2.6.2/src/library/grDevicesです/R/gevents.R)。
問題を完全に説明するためのコードをいくつか追加できますか? '?getGraphicsEvent'の例は、' Rterm.exe'で私のために働きます。 –
私は助けることができないかもしれませんが、私はなぜあなたがそのようなアプローチをとっているのか不思議です。私は数年前からRを使用してきましたが、Rstudioを使ってほとんど開発していましたが、グラフィックスにはあまり気にしませんでしたが、最近は光沢のあるライブラリと非常に使いやすいインタラクティブなアプリケーションを探しています。たぶん柔軟性があれば、光沢を見ることができます。 –