如何在不等待脚本的其余部分在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会尝试优化计算,并且它只更新用户当前可见的输出(可以使用输出选项更改,但情况不同)