R conditionalPanel对输出作出反应

时间:2013-07-26 15:41:25

标签: r shiny

我正在尝试使用R中精彩的Shiny库构建一个应用程序,我希望它能为用户生成一些错误和状态消息。为了实现这一点,我将条件面板与输出对象上的一些布尔标志结合使用,以呈现错误和状态消息的面板。根据文档,这个策略应该对我有用,但事实并非如此。

我把这个想法归结为一个简单的ui和服务器脚本,基本上我想要做的就是:

ui.R

library("shiny")

shinyUI(pageWithSidebar(

  headerPanel('Hey There Guys!'),

  sidebarPanel(
    h4('Switch the message on and off!'),
    actionButton('switch', 'Switch')
  ),

  mainPanel(
    conditionalPanel(condition = 'output.DISP_MESSAGE',
      verbatimTextOutput('msg')
    )
  )
))

server.R

library('shiny')

shinyServer(function(input, output) {
  output$DISP_MESSAGE <- reactive({input$switch %% 2 == 0})
  output$msg <- renderPrint({print("Hey Ho!  Let's Go!")})
})

这里的想法是按下按钮应该切换消息嘿嘿!我们走吧!开启和关闭。如果代码已发布,则不起作用。在Chrome中加载页面时,不会显示该消息,按下该按钮不会执行任何操作。我有最新版的Shiny来自CRAN。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

这是通过checkboxInput而不是动作按钮实现相同效果的一种方法。您可以将其用作启动代码,以使其按照您的意愿执行。

UI.R

library("shiny")
shinyUI(pageWithSidebar(

  headerPanel('Hey There Guys!'),

  sidebarPanel(
    h4('Switch the message on and off!'),
    checkboxInput(inputId = "opt_switch", label = "Toggle Message", value = FALSE)
  ),

  mainPanel(
    conditionalPanel(condition = 'opt_switch',
                     verbatimTextOutput('msg')
    )
  )  
))

Server.R

library('shiny')

shinyServer(function(input, output) {
    output$msg <- renderText({
      if(input$opt_switch == TRUE) {
         ("Hey Ho!  Let's Go!")
      }           
  })
})

希望有所帮助。