我们允许用户更新 3 个输入中的任何一个。Shiny 计算其中的比率并以% 显示。但是,这个显示的值是可以编辑的。
由于显示的值对于代码中的进一步计算是必需的,因此这种行为是不可取的。
因此,有人可以帮助以 % 显示值,但允许用户不要编辑它们。
请在下面找到代表代码。尝试过 1. 渲染为打印和冲刺,但难以格式化 2. 禁用了 renderUI,但代码没有运行,因为 renderUI 没有运行。
library(shiny)
ui <- fluidPage(
column(6,
tags$h2("Allow the user to change only here"),
numericInput("valueA", "Value1", value = .333, min = 0, max = 1, step = .1),
numericInput("valueB", "Value2", value = .333, min = 0, max = 1, step = .1),
numericInput("valueC", "Value3", value = .333, min = 0, max = 1, step = .1),
verbatimTextOutput("result")
),
column(6,
uiOutput("ui")
)
)
server <- function(input, output, session) {
output$ui <- renderUI( {
tagList(
tags$h2("Display in % but dont allow user to change here"),
numericInput("obs1", "Label1", value = 100 * (input$valueA / (input$valueA + input$valueB + input$valueC))),
numericInput("obs2", "Label2", value = 100 * (input$valueB / (input$valueA + input$valueB + input$valueC))),
numericInput("obs3", "Label3", value = 100 * (input$valueC / (input$valueA + input$valueB + input$valueC)))
)
})
# Since the below option is hard to render like above
# output$result <- renderPrint({
# print(sprintf("A=%.3f, B = %.3f",
# input$obs1,input$obs2))
# })
#### Code to use the values from obs1,obs2,obs3....
}
shinyApp(ui, server)
基本上,应该显示用户可以编辑的 3 个值和比率 (%)。然而,这些百分比不应该是可编辑的。