R Shiny:显示多个输入和文本

时间:2014-10-10 21:04:29

标签: r shiny rstudio

我想在我的RShiny应用程序的选项卡中显示多个输出对象。在本教程中,tabPanel(...)命令仅接受参数:

tabPanel("Plot", plotOutput("plot"))

但是在参考文档here中,它会将“UI元素 s 包含在选项卡中,这使我相信多个是可能的,但是我找不到例子。我试图将对象作为向量c(...)和列表list(...)传递给它。

以下是我一直在测试的server.Rui.R(来自Shiny教程)。

ui.R


    library(shiny)

    # Define UI for random distribution application 
    shinyUI(fluidPage(

      # Application title
      titlePanel("Tabsets"),

      # Sidebar with controls to select the random distribution type
      # and number of observations to generate. Note the use of the
      # br() element to introduce extra vertical spacing
      sidebarLayout(
        sidebarPanel(
          radioButtons("dist", "Distribution type:",
                       c("Normal" = "norm",
                         "Uniform" = "unif",
                         "Log-normal" = "lnorm",
                         "Exponential" = "exp")),
          br(),

          sliderInput("n", 
                      "Number of observations:", 
                      value = 500,
                      min = 1, 
                      max = 1000)
        ),

        # Show a tabset that includes a plot, summary, and table view
        # of the generated distribution
        mainPanel(
          tabsetPanel(type = "tabs", 
                      tabPanel("Plot", plotOutput("plot")), 
                      tabPanel("Summary", verbatimTextOutput("summary")), 
                      tabPanel("Table", tableOutput("table"))
          )
        )
      )
    ))

server.R


    library(shiny)

    # Define server logic for random distribution application
    shinyServer(function(input, output) {

      # Reactive expression to generate the requested distribution.
      # This is called whenever the inputs change. The output
      # functions defined below then all use the value computed from
      # this expression
      data <- reactive({
        dist <- switch(input$dist,
                       norm = rnorm,
                       unif = runif,
                       lnorm = rlnorm,
                       exp = rexp,
                       rnorm)

        dist(input$n)
      })

      # Generate a plot of the data. Also uses the inputs to build
      # the plot label. Note that the dependencies on both the inputs
      # and the data reactive expression are both tracked, and
      # all expressions are called in the sequence implied by the
      # dependency graph
      output$plot <- renderPlot({
        dist <- input$dist
        n <- input$n

        hist(data(), 
             main=paste('r', dist, '(', n, ')', sep=''))
      })

      # Generate a summary of the data
      output$summary <- renderPrint({
        summary(data())
      })

      # Generate an HTML table view of the data
      output$table <- renderTable({
        data.frame(x=data())
      })

    })

1 个答案:

答案 0 :(得分:4)

以下对我有用:

mainPanel(
    tabsetPanel(
      tabPanel("Some Title",
               h5(textOutput("some text output")),
               htmlOutput("someHTMLElement")
      ),
      tabPanel("Other Title",
               h5(textOutput("some other text output")),
               htmlOutput("otherHTMLElement")
      ),
      tabPanel("Yet Another Title",
               h5(textOutput("yet another text output")),
               htmlOutput("yetAnotherHTMLElement")
      )
    )

函数tabPanel规范是

 tabPanel(title, ..., value = NULL)

这意味着它接受&#34; UI元素的可变数量的参数,以包含在选项卡中&#34;