Объединение renderUI, dataTableOutput и renderDataTable - PullRequest
0 голосов
/ 19 апреля 2020

Предположим, у меня есть следующее блестящее приложение, которое отображает таблицу данных из пакета DT:

library(shiny)
ui <- fluidPage(uiOutput("abc"))
server <- function(input, output, session) {
  output$abc <- renderUI({DT::dataTableOutput("dt_output")})               # line 4
  output$dt_output <- DT::renderDataTable({data.table(a = 1:3, b = 4:6)})  # line 5
}
runApp(list(ui = ui, server = server))

Как бы вы соединили строки 4 и 5 с ограничением, что output$abc должно оставаться uiOutput?

Моя попытка объединения (приведенный ниже код) привела к ошибке «невозможно принудительное закрытие типа»:

output$abc <- renderUI({DT::dataTableOutput(
    DT::renderDataTable({data.table(a = 1:3, b = 4:6)}))})

1 Ответ

2 голосов
/ 22 апреля 2020

Это должно работать:

library(shiny)

ui <- fluidPage(
    uiOutput("abc")
)

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

    output$abc <- renderUI({
        output$aa <- DT::renderDataTable(head(mtcars))
        DT::dataTableOutput("aa")
    })

}
runApp(list(ui = ui, server = server))
...