0

tcltkとから始めたところRです。myFun1そして、2番目の関数を呼び出すときに呼び出される関数によって計算された値にアクセスするのに問題がありますmyFun2:

これが私のUIの簡略版です。

シンプルな tcltk インターフェイス

library(tcltk)
tt <- tktoplevel()
    topMenu <- tkmenu(tt)
    tkconfigure(tt, menu = topMenu)
    fileMenu <- tkmenu(topMenu, tearoff = FALSE)
        tkadd(fileMenu, "command", label = "Function1", command = myFun1)
        tkadd(fileMenu, "command", label = "Function2", command = myFun2)
        tkadd(topMenu, "cascade", label = "Tab", menu = fileMenu)
tkfocus(tt)

私の機能

myFun1 <- function() { 
    compVal <- 2*3
    compVal
}

myFun2 <- function() { 
    msg <- paste("The value is: \n", compVal )
    mbval<- tkmessageBox(title="This is the title",
                     message=msg,type="yesno",icon="question")
}

呼び出しmyFun1は機能しますが、myFun2戻ります

貼り付けエラー ("値は: \n", compVal): オブジェクト 'compVal' が見つかりません

また、ラッピングは機能compValreturn(compVal)ません。私もやろうと思っていました:

res <- list(compVal=compVal)

で作成したリストにアクセスできませんmyFun2myFun1内部の戻り値フォームにアクセスする方法に関する提案はありmyFun2ますか?

4

1 に答える 1

0

私は解決策を見つけました。最初は、それは実際には「クリーンな」方法ではないと思いましたが、公式ドキュメントでもこの方法で行われています。以下を使用してグローバル変数を作成するだけです<<-

myFun1 <- function() { 
    compVal <<- 2*3
}
于 2015-05-12T23:00:27.837 に答える