我需要在Shiny中呈现N个表,其中N基于用户输入。
我最初的想法是做这样的事情:
fluidPage(
fluidRow(
column(width=4
,dataTableOutput("table1")
,dataTableOutput("table2")
...
,dataTableOutput("table10")
)
)
)
shinyServer(function(input, output) {
output$table1 <- renderDataTable({ ... })
output$table2 <- renderDataTable({ ... })
...
output$table10 <- renderDataTable({ ... })
}
但是你可以看到它真的很邋and,一旦它们要求多达20,30或40个表,它就会崩溃。
我想过把东西放在for循环中,如:
for(1:N) {
,dataTableOutput("table"+N)
}
但我确信有更好的方法。向我展示光R / Shiny专家!
答案 0 :(得分:1)
更新
感谢nongkrong提供了很棒的链接: https://gist.github.com/wch/5436415/
让我的反应性工作有点麻烦,但这并不是真正的要求。
诀窍似乎是在renderUI()块中注入dataTableOutput()元素。工作非常好。
如何将renderDataTable()块指向您刚刚定义的上述标记,这也很简洁。