首页 > 解决方案 > 如何以闪亮的百分比显示“numericInput”中的值?

问题描述

我创建了一个闪亮的网页,并在侧边栏面板中使用了几个数字输入字段。其中一些应该以百分比显示值,而不应该是滑块。有人知道如何格式化数字输入字段吗?

标签: rshiny

解决方案


我可以想到两种方法。

1. 格式化内容

在服务器代码中使用文本字段并解析内容。该解决方案此时只能处理整数。基本上,它有效。然而,与之交互并不总是给你最好的可用性。

ui <- fluidPage(
    titlePanel("Parsed Input with Unit Example"),
    textInput("inpPercent", "Chances of Success", value = "20 %"),
    h1(textOutput("txtSuccess"))
)
server <- function(session, input, output) {
  observeEvent( input$inpPercent,{
    Format <- "^[-+]?[ ]*[0-9]*[ ]*[%]?$"

    # Trim
    inp <- gsub("^\\s+|\\s+$", "", input$inpPercent)
    
    if (!grepl(Format, inp)) {
      Result <- "Invalid format"
      inp <- numeric()
    } else {
      # Remove all spaces
      inp <- gsub("[[:space:]]", "", inp)
      # Split
      if (grepl("%", inp)) inp <- gsub("%", "", inp)
      inp <- suppressWarnings( as.numeric(inp) )
      if (is.na(inp)) {
        Result <- "Invalid format2"
        inp <- numeric()
      } else {
        Result <- paste("Percent:", inp)
      }
    }
  
    print(Result)
    output$txtSuccess <- renderPrint(Result)
    if (length(inp) > 0)
      updateTextInput(session, inputId = "inpPercent", value = paste(inp, "%"))
  })
}

2.闪亮的小部件:numericInputIcon

使用来自shinyWigdets包的小部件numericInputIcon 。设置这样的小部件非常容易。该文档也提供了百分比示例。

numericInputIcon 小部件的示例


推荐阅读