Đây là mã nguồn cho 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)
}
Bạn có thể thấy lý do tại sao nó trả về NULL, vì đó là làm rõ với if (!interactive()) return(NULL)
. Hãy thử điều này chèn vào mã ban đầu của bạn:
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)
Dường như để mất chức năng (ví dụ: Tôi không thể thao tác các âm mưu trên OSX với X11 như thiết bị đồ họa), nhưng ít nhất cốt truyện vẫn lên. Cuộc gọi đến mã nội bộ cho hàm này đã thay đổi gần đây (để xác nhận, xem mã nguồn cho R trong hai phiên bản - mã cho hàm này trong R 2.6.2, ví dụ là tại R-2.6.2/src/library/grDevices /R/gevents.R).
Nguồn
2013-12-19 20:56:59
Bạn có thể cung cấp thêm một số mã để chứng minh đầy đủ vấn đề không? Ví dụ từ '? GetGraphicsEvent' hoạt động cho tôi trong' Rterm.exe'. –
Tôi không thể giúp đỡ nhưng tôi tò mò là tại sao bạn lại sử dụng một cách tiếp cận như vậy. Tôi đã sử dụng R trong vài năm nay và chủ yếu được phát triển bằng Rstudio và không thưởng thức đồ họa nhiều, nhưng gần đây tôi đang nhìn vào thư viện sáng bóng và cực kỳ dễ dàng để xây dựng các ứng dụng tương tác. Có lẽ nếu bạn có sự linh hoạt, bạn có thể nhìn vào sáng bóng. –