0

我刚开始使用tcltkand R。而且我无法通过myFun1调用第二个函数时调用的函数访问计算值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”

包裹也compVal不起作用return(compVal)。我也在考虑这样做:

res <- list(compVal=compVal)

但我无法访问创建的列表myFun2。关于如何访问myFun1内部返回值表单的任何建议myFun2

4

1 回答 1

0

我找到了一个解决方案,起初我认为它并不是一种真正“干净”的方式,但即使在官方文档中也是如此。只需使用以下命令创建一个全局变量<<-

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