Ven*_*iii 4 r shiny shiny-server
我正在创建一个闪亮的应用程序,它将根据客户的不同功能为客户生成分数。在我闪亮的应用程序中,我提供了 checkboxGroupInput 来选择所需的功能。根据所选功能,应用程序将动态地将 numericInput 添加到 Web ui,以便用户可以为所选功能分配权重,并且权重将用于分数计算。我尝试了不同的方法来获取选定的特征,并希望将它们保存在向量中。这样我就可以使用向量的元素来计算分数。请有人告诉我一个解决方案,将 checkboxGroupInput 中选定的功能保存在向量中,并根据该向量访问动态创建的 numbericInput 值。
代码片段
# Select variables to determine the credit worthyness
checkboxGroupInput(
inputId = "selected_var",
label = "Choose variables:",
choices = c(
"R" = "r",
"F" = "f",
"M" = "m"
),
selected = c("r","f"))
)
server <- function(input, output) {
output$weights_input <- renderUI({
req(input$selected_var)
req(input$weights)
lapply(1:length(input$selected_var), function(i) {
numericInput(inputId = paste0(input$selected_var[i],"_weight"), label = input$selected_var[i], min = 0, max = 1, value = 0)
})
})
Run Code Online (Sandbox Code Playgroud)
您可以获得动态生成的输入的值,如下所示
input[[paste0(input$selected_var[i],"_weight")]]`
Run Code Online (Sandbox Code Playgroud)
而您只需使用 即可获取带有选定复选框的数组input$selected_var
。
下面给出了一个工作示例,希望对您有所帮助!
library(shiny)
ui <- fluidPage(
checkboxGroupInput(
inputId = "selected_var",
label = "Choose variables:",
choices = c(
"R" = "r",
"F" = "f",
"M" = "m"
),
selected = c("r","f")
),
uiOutput('weights_input'),
textOutput('score')
)
server <- function(input, output) {
output$weights_input <- renderUI({
req(input$selected_var)
lapply(1:length(input$selected_var), function(i) {
numericInput(inputId = paste0(input$selected_var[i],"_weight"), label = input$selected_var[i], min = 0, max = 1, value = 0)
})
})
output$score <- renderText({
req(input$selected_var)
selected = input$selected_var
values = sapply(1:length(input$selected_var), function(i) {
req(input[[ paste0(input$selected_var[i],"_weight")]]);input[[ paste0(input$selected_var[i],"_weight")]]
})
values = setNames(values,selected)
paste0('Input: [', paste(names(values), values, sep = ":", collapse = ", "), ']. The sum of the values is ', sum(values))
})
}
shinyApp(ui,server)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4432 次 |
最近记录: |