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)