在SHINY中的renderUi中使用renderDataTable [英] Using renderDataTable within renderUi in Shiny

查看:14
本文介绍了在SHINY中的renderUi中使用renderDataTable的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在测试一个闪亮的App来显示动态上下文,但我无法将renderDataTable用于renderUi组件。 下面是两个简单的可复制测试:第一个不起作用,第二个没有renderUi,当然可以正常工作。

这两个在概念上有什么不同,为什么第一个不能在Shiny中工作?

这个不起作用:注意ui OutputmyTable包含两个反应组件,aselectInput和arenderDataTable,但只呈现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)
            })
    }
))

编辑编号.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")
            })
    }
))

这篇关于在SHINY中的renderUi中使用renderDataTable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆