【发布时间】:2013-06-28 00:17:53
【问题描述】:
我正在使用 gWidgets 在 R 中制作 GUI。到目前为止,我一直在通过全局环境将值从一个窗口传递到另一个窗口。使用全局环境实现起来很简单,但并不理想。一个问题是R CMD check 抱怨缺少对全局变量的可见绑定。
作为该问题的解决方案,引用类已被多个 R 程序员提及。但是要了解引用类在这种情况下是如何工作的,举一个简单的例子会很有帮助。
让我提供一个愚蠢的 GUI 来使用。当用户点击第一个窗口的按钮时,它会将模型m 置于全局环境中。第二个按钮从全局环境中获取m 并给出输出。当您再次点击第一个按钮时,它将创建一个新模型m 并更改第二个按钮的输出。如果关闭第一个窗口,第二个窗口中的按钮仍然可以使用,因为m 在全局环境中。
library(gWidgets)
options(guiToolkit = "tcltk")
h1 <- function(h, ...){
d1 <- data.frame(x=runif(10), y=runif(10))
.GlobalEnv$m <- lm(x ~ y, data=d1)
}
g1 <- gbutton("1. Make model",
container=gwindow(), handler=h1)
h2 <- function(h, ...){
d2 <- data.frame(y=(1:10)/10)
p <- predict(.GlobalEnv$m, newdata=d2)
print(p)
}
g2 <- gbutton("2. Make prediction",
container=gwindow(), handler=h2)
如何在本例中使用引用类?
【问题讨论】:
标签: r user-interface global-variables gwidgets reference-class