我创建了一个闪亮的网页,并且在sidebarPanel中使用了几个numericInput-fields。其中一些应将值显示为百分比,并且不应将其作为滑块。 有人知道如何格式化numericInput字段吗?
答案 0 :(得分:0)
我可以想到两种方法。
在中使用textField并解析服务器代码中的内容。该解决方案此时只能处理整数。基本上,它可以工作。但是,与之交互并不总是为您带来最佳的可用性。
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, "%"))
})
}
使用numericInputIcon包中的小部件shinywigdets。像这样设置一个小部件非常容易。该文档也提供了百分比示例。