R闪亮自定义用户过滤器与复选框



我有数据表输出,我希望用户能够通过使用复选框来选择他们想要的行/元素来创建他们自己的自定义表。在下面的示例中是一个mtcars输出。例如,我希望用户能够使用复选框选择马自达、菲亚特、丰田和道奇车型。至于尝试任何代码,我还没有找到任何接近的例子。

library(shiny)
if (interactive()) {

# basic example
shinyApp(
ui = fluidPage(
selectInput("variable", "Variable:",
c("Cylinders" = "cyl",
"Transmission" = "am",
"Gears" = "gear"), multiple = T),
tableOutput("data")
),
server = function(input, output) {
output$data <- renderTable({
mtcars[, c("mpg", input$variable), drop = FALSE]
}, rownames = TRUE)
}
)

}

下面的一般方法是:1)创建一个复选框组输入,列出车名(即行名)作为名称,对应的值是行号;2)使用这些行号过滤服务器上的data.frame。

使用响应rowsToUse将在每次选择更改时更新。它还允许在没有选择行时处理这种情况(在下面的示例中默认为所有行)。

shinyApp(
ui = fluidPage(
checkboxGroupInput(
inputId = "variable", 
label = "Cars:",
choiceNames = rownames(mtcars),
choiceValues = seq(NROW(mtcars))
),
tableOutput("data")
),
server = function(input, output) {

rowsToUse <- reactive(

if(is.null(input$variable)) {
seq(NROW(mtcars)) 
} else{ 
as.numeric(input$variable)
}

)

output$data <- renderTable({

mtcars[rowsToUse(),  , drop = FALSE]
}, rownames = TRUE)
}
)

最新更新