如何在R闪亮的UI元素附近打印错误消息?

时间:2016-10-01 05:04:23

标签: r shiny shiny-server

示例代码:

ui.R

library(shiny) 

shinyUI(
  fluidRow(column(2, actionButton("add", "ADD details")), 
           fluidRow(uiOutput("ui"))
  )  
)

server.R

shinyServer(function(input, output,session){
  observeEvent(
    input$add,
    output$ui <- renderUI({
      isolate({
        fluidRow(column(4, textInput("birthweight", label = "birth weight:", value = '')), 
                 column(3, numericInput("height",label = "Height:",value='')),
                 column(2, actionButton("addnew", "ADD details to database")) 
        )
      })
    })
  )
})

当用户输入birthweight的输入时,如果textInput框中包含字符数据,则应在numericInput框附近显示错误消息,类似于Height ((YourActivityClassName)getActivity()).yourPublicMethod(); 。必须在用户输入数据或用户单击添加详细信息到数据库操作按钮时显示,但应在文本框附近显示为错误消息,而不是在弹出窗口中显示。

这可以在R闪亮中完成吗?

1 个答案:

答案 0 :(得分:3)

validate功能是一个选项。另一个选项是仅当textInput具有无数字值时才使用额外的UI来显示错误消息。在这种情况下,您可以将自己的CCS添加到错误消息中。这是一个基于您的代码的示例。

library(shiny)    
ui <-shinyUI(  
  fluidRow( 
    column(2, 
      actionButton("add", "ADD details")),
    fluidRow( uiOutput("ui"))
  )
)    

server <- shinyServer(function(input, output,session){
  observeEvent( input$add,
    output$ui <- renderUI({
      isolate({
        fluidRow( 
          column(4, 
            textInput("birthweight", label = "birth weight:", value = ''),
            uiOutput("checkBirthweight")), 
          column(3, 
            numericInput("height",label = "Height:",value='')),
          column(2, 
            actionButton("addnew", "ADD details to database")) 
        )
      })
    })
  )

  output$checkBirthweight <- renderUI({
    if (nchar(input$birthweight) > 0 && is.na(as.numeric(input$birthweight)))
      p("Error: birth weight must be numeric")
  })

})

shinyApp(ui, server)

顺便说一句,最好将代码作为代码放在问题中,这有助于其他人识别问题。您可以在https://stackoverflow.com/editing-help

找到有关该方面的额外帮助

另外,我知道每个人都有自己的代码风格,我尊重这一点,但我发现这些R编码指南非常有用https://google.github.io/styleguide/Rguide.xml