我正在尝试使用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))
)
})
}
))
这没关系, 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)
})
}
))
编辑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
1 回答
如果拆分
datatable
generation和ui
代的部分会更清楚: