tcltk R - 如何访问函数返回的值
tcltk R - how to access value returned by function
我刚开始使用 tcltk
和 R
。在调用第二个函数 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
}
我刚开始使用 tcltk
和 R
。在调用第二个函数 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
}