RShiny: display multiple inputs and text

I would like to display multiple output objects inside a tab in an RShiny application. In the tutorial, the command tabPanel(...)

only takes an argument:

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

      

However, in reference documents here , it reads "user interface element s to be included in the tab" leading me to "believe that the multiplicity of possible, but I can not find any examples. I have tried to convey to him the objects as vector c(...)

and list list(...)

.

Here are the tags server.R

and ui.R

that I tested with (from the "Shiny tutorial").

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())
      })

    })

      

+3


source to share


1 answer


The following worked for me:

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")
      )
    )

      

Function tabPanel

specification



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

      

which means it takes a variable number of parameters for "UI elements to include in a tab"

+3


source







All Articles