r - 在 Shiny 中输入更改时切换到不同的 DataTable 页面?

标签 r shiny datatable dt

基本上,我希望输出数据表切换到具有与输入选择值(radioButtons)匹配的值的页面。我知道我可以做一个简单的过滤器,但这会删除与我不想要的条件不匹配的所有其他行。

感谢任何帮助!谢谢!

library(shiny)
library(DT)

ui <- basicPage(
  h3("The mtcars data"),
  fluidRow(column(2,
                  offset = 1,
                  radioButtons("valSel", strong("Gear"),
                               inline = TRUE,
                               choices = c("3", "4", "5"),
                               selected = "3")),
           fluidRow(column(10,
                           offset = 1,
                           dataTableOutput("mytable")))
  )
)

server <- function(input, output) {
  
  output$mytable = DT::renderDataTable({
    mtcars[mtcars$gear == input$valSel, ]
  })
}

shinyApp(ui, server)

reprex package于2021年5月27日创建(v2.0.0)

最佳答案

您可以创建自定义js函数并切换到所需的页面。试试这个

library(shiny)
library(DT)
library(tidyverse)

ui <- basicPage(
  h3("The mtcars data"),
  fluidRow(column(2,
                  offset = 1,
                  radioButtons("valSel", strong("Gear"),
                               inline = TRUE,
                               choices = c("3", "4", "5"),
                               selected = "3")),
           fluidRow(column(10,
                           offset = 1, # verbatimTextOutput("t1"),
                           DTOutput("mytable")))
  ),
  tags$script(HTML(
    "Shiny.addCustomMessageHandler('pager',function(page) {
      $('#'+'mytable').find('table').DataTable().page(page).draw(false);
    })"
  ))
)

server <- function(input, output, session) {

  mydf <- reactive({
    mtcars %>% mutate(rowid = row_number())
  })

  subdf <- reactive({
    req(mydf())
    mydf()[mydf()$gear == input$valSel, ]
  })
  output$t1 <- renderPrint({ceiling(min(subdf()$rowid)/10)})

  output$mytable = renderDT({
    n <- length(names(mydf())) ## to remove rowid
    mydf()[,-n]
  })

  observeEvent(input$valSel,{

    page <- ceiling(min(subdf()$rowid)/10) ## assumes 10 rows are displayed per page (default); if different, replace 10 by the number of rows displayed per page
    
    session$sendCustomMessage("pager",page-1)

  })

}

shinyApp(ui, server)

关于r - 在 Shiny 中输入更改时切换到不同的 DataTable 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67725439/

相关文章:

r - 在R中的函数中使用dplyr,然后使用for循环来执行该函数

r - 如何使用 Shiny 应用程序从另一个输出生成的输出?

R:通过对数据表进行分组,获取每组的第一行及其对应的行号

vb.net - 对字母数字数据 View 列进行排序

r - 使用 shiny selectize,避免对搜索结果进行排序

R 随机森林变量重要性

r - 从应用程序内部重新启动 Shiny 的应用程序(重新加载数据)

r - 警告 : Error in <=: comparison (4) is possible only for atomic and list types

jquery - 数据表水平滚动不起作用

python - R 和 Python 中的线性回归 - 同一问题的不同结果