2016-09-01 10 views
0

私はユーザーの入力をしたいし、その入力に基づいてファイルをソースします。 Rコードは、ユーザーに何も選択せずに次のステートメントを実行するだけで実行されます。gWidgets2RGtk2のコンボボックスにユーザーが値を入力するのを待つ方法はありますか?

library(gWidgets2RGtk2) 

w <- gwindow(title="Hello World",visible=TRUE) 
g = ggroup(horizontal = FALSE, cont=w) 
glabel("Please select your favorite subject", cont=g) 
modeltype <- c("","Science","Math") 
op1 <- gcombobox(modeltype, cont=g) 

if (svalue(op1)=="Math"){ 
    source("Rscript1") 
}else if (svalue(op1)=="Science"){ 
    source("Rscript2") 
}else{ 
    source("Rscript3") 
} 

私は、ウィンドウを閉じたりしてもダウンリスト私のドロップからオプションを選択する前に、それは自動的に値として「」をを取り、ELSE文に行くとRScript3を実行します。ユーザーからの入力があるまで実行を一時停止するにはどうすればいいですか?おかげさまで

+0

は[そのポスト]のようにハンドラにコードを入れてください(http://stackoverflow.com/questions/30204086/how-to-make-reactive-combobox-:それはあなたの行動を置く場所ですin-r-using-gwidgets2rgtk2/30312527) – HubertL

答えて

1

ハンドラ関数は、コンボボックスで項目が選択されたときに呼び出されます。

addHandlerChanged(op1, handler=function(...){ 
    if (svalue(op1)=="Math"){ 
     source("Rscript1") 
    }else if (svalue(op1)=="Science"){ 
     source("Rscript2") 
    }else{ 
     source("Rscript3") 
    } 
}) 
+0

ご回答ありがとうございます。 op1とop2で同じことを実行するにはどうすればいいですか?つまり、2つの条件に基づいてスクリプトを実行します。両方のコンボボックスに同じハンドラを置くことはできますか?反論しても、コードを調整することができます。ありがとう。 – Jain

+0

アクションを実行する関数を作成し、両方のコンボボックスハンドラとして設定できます。コンボボックスのいずれかが変更されたときに呼び出されます。 – HubertL

関連する問題