在以下示例中,文本未在開始時顯示。如果我點擊「顯示」 - 按鈕,文本出現。如果我然後點擊「隱藏」 - 按鈕,沒有其他事情發生了。 事實上,「textis $ visible」變量總是具有正確的值,但我認爲observeEvent函數中的if語句只是在第一次單擊按鈕後計算的。爲什麼observeEvent不重新評估它的內容?
有沒有辦法強制observeEvent重新評估if語句?或者還有其他方法可以停止在服務器部分中執行代碼並重新啓動它(在真實情況下,if語句中會有一大堆函數調用,而不僅僅是隱藏和顯示一些文本),而不是僅僅隱藏和顯示一些文本。
library(shiny)
ui <- fluidPage(
actionButton(inputId="show","show"),
actionButton(inputId="hide","hide"),
textOutput(outputId = "some_text")
)
server <- function(input, output) {
textis<-reactiveValues(visible=FALSE)
observeEvent(input$show,
textis$visible<-TRUE)
observeEvent(input$hide,
textis$visible<-FALSE)
observeEvent(textis$visible , if(textis$visible){
output$some_text<-renderText({"this is some text"})
})}
shinyApp(ui = ui, server = server)
這種解決了我的問題。但是在真正的應用程序中,我想停止server.R執行它的代碼的一部分,並且不顯示已經執行的東西,如果某個值變爲false。它就像一個註銷功能,其他計算機用戶不會看到您計算的內容。有沒有辦法重新啓動R會話? –
爲重新設置閃亮的應用程序,我發現一個很好的答案: https://stackoverflow.com/questions/25062422/restart-shiny-session –