我有一个Shiny应用程序,它应该计算一个值并呈现它,然后使用相同的值进行更昂贵的计算。问题在于它仅在完成评估整个脚本之后才显示输出。这里有一个简单的例子:如何在不等待脚本的其余部分运行的情况下呈现输出Shiny
library(shiny)
ui <- fluidPage(
titlePanel("test"),
sidebarLayout(
sidebarPanel(
textInput("text_in","Enter text here",value = "This is text to process"),
actionButton("go", "Go")
),
mainPanel(
textOutput("first_text"),
textOutput("results")
)
)
)
# Define server logic
server <- function(input, output) {
num_letter<-eventReactive(input$go, {
nchar(input$text_in)})
output$first_text <- renderText(num_letter())
sec_calculation<-eventReactive(num_letter(), {
Sys.sleep(3)
num_letter()*num_letter()})
output$first_text <- renderText(num_letter())
output$results <- renderText(sec_calculation())
}
# Run the application
shinyApp(ui = ui, server = server)
我加了Sys.sleep
,所以它会更容易看到问题。我希望得到第一个输出而不用等待第二个输出。
一个简单的解决方案是通过操作按钮触发昂贵的计算。 – Jimbou
谢谢,我正在寻找一个不涉及另一个操作按钮的解决方案,我希望用户只能点击一次 – Nooga