r - 用于显示表格的 Shiny 模块

标签 r shiny dt

开始使用shiny,我尝试学习如何使用shiny module设计模式。作为最简单的示例,我想显示一个数据集而无需任何进一步的交互。

我希望在 navbarPagetabPanel 中组织 UI。每个面板都是相互独立的,(除了所有面板都使用全局数据库连接对象,但这现在不困扰我)。

以下是 DT GUI 元素的代码:

library(shiny)
library(DT)

tabTable <- function(id) {
    ns <- shiny::NS(id)
    tabPanel(
        "Table",
        shiny::dataTableOutput(ns("table"))
    )
}

这是服务器逻辑。我想让它绘制数据表。

srvTable <- function(id, dat) shiny::moduleServer(id,
    function(input, output, session) {
        output$table <- shiny::renderDataTable({DT::datatable(dat)})
    }
)

现在这是用户界面和服务器的定义:

ui <- shiny::navbarPage(title="Test",
    tabTable(id="iris"),
    shiny::tabPanel(title="Scatter")
)

server <- function(input, output, session) {
    srvTable(id="iris", dat=iris)
    session$onSessionEnded(stopApp)
}

shiny::shinyApp(ui, server)

此应用程序启动,它显示导航栏,但不显示数据集。有什么提示我在哪里放置命令吗?对我来说,问题是服务器模块没有需要使用react的明显条件。这种情况该怎么办?

最佳答案

试试这个

library(shiny)
library(DT)

tabTable <- function(id) {
  ns <- shiny::NS(id)
  tabPanel(
    "Table",
    DTOutput(ns("table"))
  )
}

srvTable <- function(id, dat) { shiny::moduleServer(id,
                                                  function(input, output, session) {
                                                    output$table <- renderDT({DT::datatable(dat)})
                                                  }
)}

ui <- shiny::navbarPage(title="Test",
                        tabTable(id="iris"),
                        shiny::tabPanel(title="Scatter")
)

server <- function(input, output, session) {
  srvTable(id="iris", dat=iris)
  session$onSessionEnded(stopApp)
}

shiny::shinyApp(ui, server)

关于r - 用于显示表格的 Shiny 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65208337/

相关文章:

r - 在 data.table (R) 中按组高效生成随机变量

r - 使用 Shiny 的 DT 动态预选行

javascript - Shiny 的数据表工具提示/弹出窗口不适用于分页

r - 合并 DT::datatable 中的列

R ttest 使用 tidy 循环分组变量

r - R中的 "diagonal"矩阵平方

python - 计算从年/月开始到今天的天数

R Shiny : Creating a filter function relying on input in a separate file

r - 如何在 R 中的 Shiny 中调整侧边栏面板的大小?

r - 如何在一个面板中包含 renderPrint() 和其他渲染