在Shiny中在一页上输出几个表

时间:2013-09-26 19:24:10

标签: r shiny

我正在尝试构建一个Shiny接口,它接受一个数据文件名,然后运行一个生成4个表(矩阵)的.R脚本,并在Shiny中一次性输出它们。例如:

ui.R

shinyUI(pageWithSidebar(
    headerPanel("Calculate CDK fingerprints"),
    sidebarPanel(
        textInput("text_input_fingerprints", "Enter smiles file name:"),
        actionButton("runButton", "Run")
    ),
    mainPanel(
        tableOutput("cdk")
    )
   )
  )

server.R

shinyServer(function(input,output){

output$cdk <- renderTable({

    input$runButton

    if (input$runButton == 0) {return()}        
    else{
         source('calculate_cdk_fingerprints.R', local = TRUE)
         print(table1)
         print(table2)
         print(table3)
         print(table4)
        }
     })
})

不幸的是,Shiny只打印最后一个表,表4.我无法真正拆分.R脚本,因为它还会将一些文件输出到本地文件夹。是的,我真的需要使用actionButton()。

有什么建议吗?提前谢谢!

1 个答案:

答案 0 :(得分:3)

每个都需要一个单独的表输出。或者,您可以将verbatimTextSummaryrbind

一起使用
mainPanel(
    tableOutput("cdk1"),
    tableOutput("cdk2"),
    tableOutput("cdk3")
)

ui.r

shinyUI(pageWithSidebar(
    headerPanel("Calculate CDK fingerprints"),
    sidebarPanel(
        textInput("text_input_fingerprints", "Enter smiles file name:"),
        actionButton("runButton", "Run")
    ),
    mainPanel(
        tableOutput("cdk1"),
        tableOutput("cdk2"),
        tableOutput("cdk3")
    )
   )
  )

server.r

shinyServer(function(input,output){

#----
## eg: 
# source('calculate_cdk_fingerprints.R', local = TRUE)
#-----
## Example: 
table1 <- matrix(1:20, nrow=4)
table2 <- matrix(101:120, nrow=4)
table3 <- matrix(201:220, nrow=4)


output$cdk1 <- renderTable({

    input$runButton

    if (input$runButton == 0) {return()}        
    else{
         table1
        }
     })

output$cdk2 <- renderTable({

    input$runButton

    if (input$runButton == 0) {return()}        
    else{
         table2
        }
     })

output$cdk3 <- renderTable({

    input$runButton

    if (input$runButton == 0) {return()}        
    else{
         table3
        }
     })
})