我正在尝试构建一个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()。
有什么建议吗?提前谢谢!
答案 0 :(得分:3)
每个都需要一个单独的表输出。或者,您可以将verbatimTextSummary
与rbind
mainPanel(
tableOutput("cdk1"),
tableOutput("cdk2"),
tableOutput("cdk3")
)
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")
)
)
)
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
}
})
})