tcltk R - как получить доступ к значению, возвращаемому функцией

Я только начал с tcltk а также R, И у меня возникают проблемы с доступом к вычисленному значению с помощью функции под названием myFun1 при вызове второй функции myFun2:

Вот упрощенная версия моего пользовательского интерфейса:

Простой интерфейс 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?

1 ответ

Решение

Я нашел решение, сначала я подумал, что это не совсем "чистый" способ сделать это, но даже в официальной документации это делается именно так. Просто создайте глобальную переменную, используя <<-:

myFun1 <- function() { 
    compVal <<- 2*3
}
Другие вопросы по тегам