本文介绍了在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))
)
})
}
))
这很好,selectInput
和renderDataTable
都被呈现:
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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!