我正在尝试使用预选中的复选框在R中创建带有分页的数据表。其他示例(例如here)不考虑分页。
在以下示例中,当您返回页面时,复选框状态将重置。另外,变量excluderows不会计算其他页面上检查的行。
library(shiny)
library(DT)
ui = fluidPage(
tags$script(HTML('$(document).on("click","input",function () {
var checkboxes = document.getElementsByName("row_selected");
var checkboxesChecked = [];
for (var i=0; i<checkboxes.length; i++) {
if (checkboxes[i].checked) {
checkboxesChecked.push(checkboxes[i].value);
}}
Shiny.onInputChange("checked_rows",checkboxesChecked);
})')),verbatimTextOutput("excludedRows"),DTOutput('myDT')
)
server = function(input,output) {
mymtcars_reactive <- reactive(mtcars)
output$myDT <- renderDataTable({
mymtcars <- mymtcars_reactive()
mymtcars[["Select"]] <- paste0('<input type="checkbox" name="row_selected" value=',1:nrow(mymtcars),' checked>')
datatable(mymtcars,selection = "multiple",options = list(pageLength = 14,lengthChange = FALSE,stateSave = TRUE),rownames= FALSE,escape=F)
})
output$excludedRows <- renderPrint({
intersect(input$checked_rows,1:nrow(mymtcars_reactive()))
})
}
shinyApp(ui,server,options = list(launch.browser = TRUE)