gWidgetsを使用してRでGUIを作成しています。今まで私は地球環境を介してあるウィンドウから別のウィンドウに値を渡していました。地球環境を使用するのは簡単ですが理想的ではありません。 1つの問題は、R CMD check
がグローバル変数の目に見えるバインディングを欠いていると言うことです。R参照クラスを使用してGUI内のあるウィンドウから別のウィンドウに値を渡す
参照クラスは、いくつかのRプログラマによって言及されている。しかし、この文脈で参照クラスがどのように機能するかを理解するためには、単純な例を持つことが本当に役に立ちます。
私はうまくGUIを使って作業しましょう。ユーザーが最初のウィンドウのボタンを押すと、モデルm
がグローバル環境に置かれます。 2番目のボタンは地球環境からm
を得て、出力を出します。最初のボタンをもう一度押すと、新しいモデルm
が作成され、2番目のボタンの出力が変更されます。最初のウィンドウを閉じると、m
がグローバル環境にあるため、2番目のウィンドウのボタンは引き続き機能します。
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)
この例では、どのように参照クラスを使用できますか?
素晴らしい例です。このコードは警告を出します:.checkFieldsInMethod(def、fieldNames、allMethods): フィールド名へのローカル割り当ては、フィールドを変更しません: modelData < - data.frame(x = runif(10)、y = runif(10) );可視(win1)< - TRUE; visible(win2)< - TRUE "<< - "を使用しましたか? (メソッド "SillyGui"クラスの "初期化") – JacobVanEtten
@JacobVanEttenありがとう。私は 'modelData < - '行を修正しました。 '目に見える<--'行はローカル割り当てでなければなりません。 'suppressWarnings'の中の' setRefClass'に呼び出しをラップしてください。 –
ありがとう!私はJohn'sの提案を最初に従いますが、この例をオンラインにすることは素晴らしいことです。 – JacobVanEtten