2014-10-10 55 views
1

我开发了一个带有RStudio的Shiny应用程序,它接受输入,执行查找表的搜索,然后返回一个值。在用户点击提交按钮之前,不应该执行搜索。但是,启动后,应用会自动执行并返回查找表中的第一组值。在初次搜索后,该应用程序完全按照预期工作。是否可以抑制这个初始搜索(或者有一个默认值),并且在按下提交按钮时只进行搜索?我可以不存在重复性的代码,但这里是我的输入(server.R)和我的用户界面(ui.R)代码的结构:闪亮的应用程序 - 如何在启动时抑制功能和渲染?

#server.R snippet 
output$Word <- renderText({ 
    predictWord <- input$gram 
    predict.function(predictWord) #User-defined function in global.r file 
    }) 


#ui.R snippet 

tabPanel("Word Prediction", 
    sidebarPanel(
    textInput("gram", "Enter up to three words"), 
    submitButton("Predict")), 

mainPanel(
    h4("Word Prediction"), 
    textOutput("predictWord"))) 

回答

1

一种方法是到位的替代actionButtonsubmitButton并将其包装在if语句中的任何组件。这里是一个简单的例子,显示一个只从Shiny Widget Gallery稍微修改的数字。

require(shiny) 
runApp(list(
    ui = pageWithSidebar(
    headerPanel("actionButton test"), 
    sidebarPanel(
     numericInput("n", "N:", min = 0, max = 100, value = 50), 
     br(), 
     actionButton("goButton", "Go!"), 
     p("Click the button to update the value displayed in the main panel.") 
    ), 
    mainPanel(
     verbatimTextOutput("nText") 
    ) 
), 
    server = function(input, output){ 
    output$nText <- renderText({ 
     # Take a dependency on input$goButton 
     if(input$goButton >= 1){ 

     # Use isolate() to avoid dependency on input$n 
     isolate(input$n) 
     } 
    }) 
    } 
) 
)