tcltk R - 如何访问函数返回的值

tcltk R - how to access value returned by function

我刚开始使用 tcltkR。在调用第二个函数 myFun2:

时,我无法通过名为 myFun1 的函数访问计算值

这是我的 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 returns

Error in paste("The value is: \n", compVal) : Object 'compVal' not found

也无法将 compVal 包装到 return(compVal) 中。 我也在考虑这样做:

res <- list(compVal=compVal)

但我无法使用 myFun2 访问创建的列表。 关于如何在 myFun2?

中访问返回值形式 myFun1 的任何建议

我找到了一个解决方案,起初我认为这不是真正的 "clean" 方法,但即使在官方文档中也是这样做的。 只需使用 <<- :

创建一个全局变量
myFun1 <- function() { 
    compVal <<- 2*3
}