R Shiny:复选框输入数字转换在评分方法中不起作用
RShiny: checkboxInput numeric conversion not working in scoring methodology
我想使用 checkboxInput 来指示哪些变量需要进入评分方法(即,如果需要,可以省略一些变量)。我希望将 checkboxInput 转换为 0 或 1,并且此数字将用于评分算法。
我知道评分方法有效,因为当我选择忽略 checkboxInput 的默认变量时它会起作用,但不适用于这些手动复选框。
如果有任何帮助,我将不胜感激。以下不是代码的精确副本;只是一个简化版本,让读者更容易理解。如果这种方式过于简化,请告诉我;实际代码相当复杂,但我想强调一个简单的问题,这个问题不知为何让我头疼。谢谢!
我试过使 checkboxInput 成为反应变量,我已经将它们变成整数等。我觉得我缺少了一些明显的东西。
代码如下:
ui:
(
uiOutput('variable1selected'),
uiOutput('variable2selected'),
uiOutput("variable3selected")
)
服务器:
output$variable1selected = renderUI({
checkboxInput("variable1selected",
"Include Variable 1 in Analysis",
value=TRUE)
})
output$variable2selected = renderUI({
checkboxInput("variable2selected",
"Include Variable 2 in Analysis",
value=TRUE)
})
output$variable3selected = renderUI({
checkboxInput("variable3selected",
"Include Variable 3 in Analysis",
value=TRUE)
})
variable1selected = as.integer(input$variable1selected)
variable2selected = as.integer(input$variable2selected)
variable3selected = as.integer(input$variable3selected)
Score = variable1selected*10 + variable2selected*20 +
variable3selected*30
没有任何错误消息,只是在选中 checkboxInput 时根本不计分。我希望每一行都有一个分数,然后我按该分数对 table 进行排序。实际生成的是未排序的 table,因为没有要排序的分数(每行的 "Score" 变量为 NA)。
reactive()
函数将成为您最好的朋友。你几乎完成了你想做的事情:
library(shiny)
ui <- fluidPage(
uiOutput('variable1selected'),
uiOutput('variable2selected'),
uiOutput("variable3selected"),
uiOutput("Score")
)
server <- function(input,output){
output$variable1selected = renderUI({
checkboxInput("variable1selected",
"Include Variable 1 in Analysis",
value=TRUE)
})
output$variable2selected = renderUI({
checkboxInput("variable2selected",
"Include Variable 2 in Analysis",
value=TRUE)
})
output$variable3selected = renderUI({
checkboxInput("variable3selected",
"Include Variable 3 in Analysis",
value=TRUE)
})
variable1selected = reactive({as.integer(input$variable1selected)})
variable2selected = reactive({as.integer(input$variable2selected)})
variable3selected = reactive({as.integer(input$variable3selected)})
Score = reactive({variable1selected()*10 + variable2selected()*20 +
variable3selected()*30})
output$Score <- renderText(Score())
}
# Run the application
shinyApp(ui = ui, server = server)
我想使用 checkboxInput 来指示哪些变量需要进入评分方法(即,如果需要,可以省略一些变量)。我希望将 checkboxInput 转换为 0 或 1,并且此数字将用于评分算法。
我知道评分方法有效,因为当我选择忽略 checkboxInput 的默认变量时它会起作用,但不适用于这些手动复选框。
如果有任何帮助,我将不胜感激。以下不是代码的精确副本;只是一个简化版本,让读者更容易理解。如果这种方式过于简化,请告诉我;实际代码相当复杂,但我想强调一个简单的问题,这个问题不知为何让我头疼。谢谢!
我试过使 checkboxInput 成为反应变量,我已经将它们变成整数等。我觉得我缺少了一些明显的东西。
代码如下:
ui:
(
uiOutput('variable1selected'),
uiOutput('variable2selected'),
uiOutput("variable3selected")
)
服务器:
output$variable1selected = renderUI({
checkboxInput("variable1selected",
"Include Variable 1 in Analysis",
value=TRUE)
})
output$variable2selected = renderUI({
checkboxInput("variable2selected",
"Include Variable 2 in Analysis",
value=TRUE)
})
output$variable3selected = renderUI({
checkboxInput("variable3selected",
"Include Variable 3 in Analysis",
value=TRUE)
})
variable1selected = as.integer(input$variable1selected)
variable2selected = as.integer(input$variable2selected)
variable3selected = as.integer(input$variable3selected)
Score = variable1selected*10 + variable2selected*20 +
variable3selected*30
没有任何错误消息,只是在选中 checkboxInput 时根本不计分。我希望每一行都有一个分数,然后我按该分数对 table 进行排序。实际生成的是未排序的 table,因为没有要排序的分数(每行的 "Score" 变量为 NA)。
reactive()
函数将成为您最好的朋友。你几乎完成了你想做的事情:
library(shiny)
ui <- fluidPage(
uiOutput('variable1selected'),
uiOutput('variable2selected'),
uiOutput("variable3selected"),
uiOutput("Score")
)
server <- function(input,output){
output$variable1selected = renderUI({
checkboxInput("variable1selected",
"Include Variable 1 in Analysis",
value=TRUE)
})
output$variable2selected = renderUI({
checkboxInput("variable2selected",
"Include Variable 2 in Analysis",
value=TRUE)
})
output$variable3selected = renderUI({
checkboxInput("variable3selected",
"Include Variable 3 in Analysis",
value=TRUE)
})
variable1selected = reactive({as.integer(input$variable1selected)})
variable2selected = reactive({as.integer(input$variable2selected)})
variable3selected = reactive({as.integer(input$variable3selected)})
Score = reactive({variable1selected()*10 + variable2selected()*20 +
variable3selected()*30})
output$Score <- renderText(Score())
}
# Run the application
shinyApp(ui = ui, server = server)