在R Shiny主面板上打印多个表格

时间:2014-03-20 15:09:11

标签: r shiny

我正在写一个R闪亮的应用程序,我有一个Ui。 R为用户提供了选择多个选项,每个选项都映射到一个包含两列数据的制表符分隔文件。

我希望它有一个带有标签的主表,其中一个标签打印表格(由用户选择)一个在另一个之下。
这是我的代码:

Ui.R
shinyUI(pageWithSidebar(
  headerPanel(strong(" ", style="color:black"), windowTitle="T2P"),

  sidebarPanel(

    tags$head(        
        tags$style(type='text/css', "input { width: 100px; }"),# control numericInput box        ,        
        tags$style(type='text/css', "select,textarea,.jslider,.well { background-color: #F0F0F0; } ")
        ),


     selectInput("var", 
      label = (strong("Choose Feature DataSets for Analysis", style="color:black")),
      choices = c(" ","Gene Ontology", "PFAM",
        "SecondaryStructures", "PeptideStats"),
      selected = "", multiple=TRUE)

     ),


     mainPanel(  


        tags$head(
                    tags$style(type = "text/css", "a{color: black;}")
                ),  
        list(tags$head(tags$style("body {background-color: #F5F5F5; }"))),

        ##
        tabsetPanel(id="tabSelected",
            tabPanel("Introduction", style="color:black",
                h1("Introduction"),
                textOutput("myselection"),
                br()

                 # tableOutput("myGO")

            ),
            tabPanel("Table", style="color:black",
                h1("Table"),

                # tableOutput("myselection2Table")

                    tableOutput("myGO"),

                # br(),
                tableOutput("myPFAM")


            )           
        )
    )
)
)


server.R
shinyServer(
  function(input, output) 
  {

    output$myGO <- renderTable({
     myGOdata <- {
        if (input$var %in% "Gene Ontology")
        {
            data.frame(read.table("GO.txt", sep="\t",header=TRUE))
        }
    }

    })

    output$myPFAM <- renderTable({
        if (input$var %in% "PFAM")
        {
            data.frame(read.table("PFAM.txt", sep="\t",header=TRUE))
        }
    })  
 }
) 

1 个答案:

答案 0 :(得分:3)

在您的条件中&#34; if(输入$ var%in%&#34; PFAM&#34;)&#34;你逐个测试,如果&#34;输入$ var&#34;在&#34; PFAM&#34;中,它为每个元素返回一个布尔值。

If语句无法处理返回多个布尔值的表达式,这就是为什么你可能会收到这样的警告:Warning in if (input$var %in% "Gene Ontology") { : the condition has length > 1 and only the first element will be used

反转你的测试,它应该是:&#34; if(&#34; Gene Ontology&#34;%in%input $ var)&#34;。您需要测试&#34; Gene Ontology&#34;在&#34;输入$ var&#34;而不是相反。

Normaly,现在应该可以了。