我正在尝试使用Shiny App来显示动态上下文,但是我无法将renderDataTable集成到renderUi组件中。
下面是两个简单的可复制测试:第一个不能正常工作,第二个没有renderUi的工作正常。

这两者之间在概念上有什么区别,为什么第一个不能在Shiny中工作?

这是行不通的:请注意uiOutput myTable包含两个反应性组件,一个selectInput和一个renderDataTable,但是仅呈现selectInput

library(shiny)
runApp(list(
    ui = fluidPage(
            fluidRow(h2("where is the table?")),
            uiOutput('myTable')
    ),
    server = function(input, output) {
            output$myTable <- renderUI({
                    fluidPage(
                            fluidRow(selectInput("test", "test", c(1,2,3))),
                            fluidRow(renderDataTable(iris))
                    )
            })
    }
))


很好,同时渲染了selectInputrenderDataTable

library(shiny)
runApp(list(
    ui = fluidPage(
            fluidRow(h2("where is the table?")),
            fluidRow(selectInput("test", "test", c(1,2,3))),
            fluidRow(dataTableOutput('myTable'))
    ),
    server = function(input, output) {
            output$myTable = renderDataTable(iris)
    }
))


如何使第一个方案起作用?

谢谢。

怡辉评论后编辑(感谢怡辉):

renderUi中必须使用某些ui函数,而不是某些渲染函数:
以正确的方式更改了示例代码,结果没有改变:仍然没有数据显示。

library(shiny)
runApp(list(
    ui = basicPage(
            uiOutput('myTable')
    ),
    server = function(input, output) {
            output$myTable <- renderUI({dataTableOutput(iris)
            })
    }
))


编辑n.2

刚解决,就可以这样工作:

library(shiny)
runApp(list(
    ui = fluidPage(
            mainPanel(

                    uiOutput('myTable')
            )
    ),
    server = function(input, output) {
            output$myTable <- renderUI({
                    output$aa <- renderDataTable(iris)
                    dataTableOutput("aa")
            })
    }
))


我必须先将renderTableOutput保存在输出变量中,然后再将其输入dataTableOutput

感谢您将我指向:here

最佳答案

如果将datatable世代和ui世代的部分分开,将会更清楚:

library(shiny)
runApp(list(
    ui = fluidPage(
            mainPanel(
                    uiOutput('myTable')
            )
    ),
    server = function(input, output) {
            output$aa <- renderDataTable({iris})
            output$myTable <- renderUI({
                    dataTableOutput("aa")
            })
    }
))

关于r - 在Shiny中的renderUi中使用renderDataTable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31813601/

10-09 17:23