簡體   English   中英

R - Shiny - 如何在觀察者中多次更新textOutput

[英]R - Shiny - How to update a textOutput multiple times in an observer

我有一個關於更新閃亮應用程序中的文本輸出的問題。

在一個觀察者中,我進行了幾次計算,並且在每個計算之間,我想在文本輸出中顯示信息。

我嘗試了幾件事,但它唯一展示的是最后的信息:

library(shiny)

ui <- fluidPage(
  headerPanel("Hello !"),
  mainPanel(
    actionButton("bouton", "Clic !"),
    textOutput("texte")
  )
)

server <- function(input,output, session){

  observeEvent(input$bouton, {
    output$texte = renderText("Initialization...")
    Sys.sleep(1)
    output$texte = renderText("Almost ready...")
    Sys.sleep(3)
    output$texte = renderText("Ok !")
  })
}

runApp(list(ui=ui,server=server), launch.browser = TRUE)

要么 :

library(shiny)

ui <- fluidPage(
  headerPanel("Hello !"),
  mainPanel(
    actionButton("bouton", "Clic !"),
    textOutput("texte")
  )
)

server <- function(input,output, session){
  rv = reactiveValues()

  rv$mess = ""

  observeEvent(input$bouton, {
    rv$mess = "Initialization..."
    Sys.sleep(1)
    rv$mess = "Almost ready..."
    Sys.sleep(3)
    rv$mess = "Ok !"
  })
  observe({
    output$texte <<- renderText(rv$mess)
  })
}

runApp(list(ui=ui,server=server))

編輯:在這兩個例子中,它只顯示最后一條消息“OK!”

我哪里錯了?

謝謝你的幫助 !

感謝Eugene,這是我的工作代碼(僅限服務器):

server <- function(input,output, session){
  rv = reactiveValues()

  rv$mess = ""

  observeEvent(input$bouton, {
    withProgress({
      setProgress(message = "Initialization...")
      Sys.sleep(1)
      setProgress(message = "Almost ready...")
      Sys.sleep(3)
      setProgress(message = "Ok !")
      Sys.sleep(2)
    })
  })
}

您可以考慮使用閃亮的進度指標實現此目標:

  1. 將所有內容包裝在withProgress的觀察者中,和
  2. 使用setProgress( message = "some message" ) ,你使用rv$messoutput$texte

但是,進度指示器將顯示在右上角(如果您修改了css,則顯示在其他位置)而不是輸出框中。

http://shiny.rstudio.com/articles/progress.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM