R 数据表的动态数量

R 数据表的动态数量,r,shiny,shinydashboard,dt,R,Shiny,Shinydashboard,Dt,我正在使用附加的代码根据组生成子表。由于某些原因,每个表只呈现数据的最后一部分。 如果有人能告诉我出了什么问题,那就太好了 溴 库(闪亮) 图书馆(shinydashboard) 图书馆(DT) 库(数据表) tabnamesOk,找到了一个解决方案:需要在单独的变量中传递它: library(shiny) library(shinydashboard) library(DT) library(data.table) tabnames <- LETTERS[1:6] DT <-

我正在使用附加的代码根据组生成子表。由于某些原因,每个表只呈现数据的最后一部分。 如果有人能告诉我出了什么问题,那就太好了

库(闪亮)
图书馆(shinydashboard)
图书馆(DT)
库(数据表)

tabnamesOk,找到了一个解决方案:需要在单独的变量中传递它:

library(shiny)
library(shinydashboard)
library(DT)
library(data.table)

tabnames <- LETTERS[1:6]

DT <- data.table(mtcars[1:30,], keep.rownames=TRUE)
DT[, grp:=rep(tabnames, each=trunc(nrow(mtcars)/length(tabnames)))]


ui = dashboardPage(
  dashboardHeader(title = "Dynamic DTs"),
  dashboardSidebar(),
  dashboardBody(
    uiOutput("tables"),
    p(),
    verbatimTextOutput("selectedCells")
  )
  )


server <- function(input, output, session) {
  output$tables <- renderUI({
    output_list <- list()
    for(i in seq(tabnames)){
      output_list[[i]] <- column(4, DT::dataTableOutput(outputId=tabnames[i]))
    }
    print(fluidRow(output_list))
    return(fluidRow(output_list))
  })


  for(i in seq(tabnames)){
    tabname <- tabnames[i]
    local({
      subDT <- DT[grp %in% tabname, 1:3]
      output[[tabname]] <- DT::renderDataTable({
        subDT
      }, selection=list(mode="multiple", target="cell"))
    })
  }
  output$selectedCells <- renderPrint(input$A_cells_selected)
}

shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(shinydashboard)
图书馆(DT)
库(数据表)
标签名
library(shiny)
library(shinydashboard)
library(DT)
library(data.table)

tabnames <- LETTERS[1:6]

DT <- data.table(mtcars[1:30,], keep.rownames=TRUE)
DT[, grp:=rep(tabnames, each=trunc(nrow(mtcars)/length(tabnames)))]


ui = dashboardPage(
  dashboardHeader(title = "Dynamic DTs"),
  dashboardSidebar(),
  dashboardBody(
    uiOutput("tables"),
    p(),
    verbatimTextOutput("selectedCells")
  )
  )


server <- function(input, output, session) {
  output$tables <- renderUI({
    output_list <- list()
    for(i in seq(tabnames)){
      output_list[[i]] <- column(4, DT::dataTableOutput(outputId=tabnames[i]))
    }
    print(fluidRow(output_list))
    return(fluidRow(output_list))
  })


  for(i in seq(tabnames)){
    tabname <- tabnames[i]
    local({
      subDT <- DT[grp %in% tabname, 1:3]
      output[[tabname]] <- DT::renderDataTable({
        subDT
      }, selection=list(mode="multiple", target="cell"))
    })
  }
  output$selectedCells <- renderPrint(input$A_cells_selected)
}

shinyApp(ui = ui, server = server)