如何在不等待脚本的其余部分在R中运行的情况下显示输出

如何在不等待脚本的其余部分在R中运行的情况下显示输出,r,shiny,R,Shiny,我有一个闪亮的应用程序,应该计算一个值,展示它,然后使用相同的值进行更昂贵的计算。问题是,它只有在完成对整个脚本的评估之后才向我显示输出。下面是一个简单的例子: library(shiny) ui <- fluidPage( titlePanel("test"), sidebarLayout( sidebarPanel( textInput("text_in","Enter text here",value = "This is text to process"

我有一个闪亮的应用程序,应该计算一个值,展示它,然后使用相同的值进行更昂贵的计算。问题是,它只有在完成对整个脚本的评估之后才向我显示输出。下面是一个简单的例子:

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)
库(闪亮)

ui这在当前是不可能的(至少在本地闪亮代码中是不可能的-您可以随时破解一个解决方案)。闪亮的github存储库中存在一个公开问题:

一个简单的解决方案是通过一个操作按钮触发昂贵的计算。谢谢,我正在寻找一个不涉及其他操作按钮的解决方案,我希望用户只需单击一次按钮即可获得答案。我偶然发现了另一个解决办法。如果使用
tabsetPanel()
并将更昂贵的计算放在另一个
tabPanel()
中,它实际上会立即显示它。。。因此,如果您不必将它们都放在同一个页面中,这是很有用的,因为shiny会尝试优化计算,并且它只更新用户当前可见的输出(可以使用
输出选项更改,但情况不同)