如何根据userInput更改显示的表

时间:2016-12-30 19:36:35

标签: r dataframe shiny display reactive

我有一段代码,我需要根据R中SelectInput命令的用户输入显示不同的表。 我只想在userinput为Level 2时显示表base_level2,当用户选择selectInput Level 3时显示base_level3 我不确定反应命令是否可以帮助我,但当时我真的很困惑,我该怎么做。 先谢谢大家。

ui.R

library(shiny) library(radarchart) library(fmsb)
 # Define UI for random distribution application  

shinyUI(pageWithSidebar(   headerPanel('A competency profiling model
     for Software engineers'),   sidebarPanel(

 selectInput("dataset", "Choose Level of competence :", 
             choices = c("Level 2", "Level 3"), selected = "Level 2"),

 radioButtons("selectedCategory","Make your choice of Skills : ", rownames(x), selected = "Professional skills" ),
 checkboxGroupInput('selectedLevels', 'Who to include', 
                    names(scores[]), selected="Technical Junior"),
 sliderInput("Candidate", "Candidate number:",
             min = 1, max = 50, value = 1)),
 mainPanel(
     tabsetPanel(type="tabs",
             tabPanel('Level2/Level3 RCD frame', tableOutput("table")),
             tabPanel("Candidates ACD frame ", tableOutput("candidate")),
             tabPanel("Radar Plot #1", chartJSRadarOutput("radar", width = "450", height = "300"), width = 7 ),
             tabPanel("Radar Plot #2" ,plotOutput("triangle", width = "100%", height = "900px"), width = 7 ),
             tabPanel("Clustering Plots",plotOutput("cluster", width = "100%", height = "900px"), width = 7 ),
             tabPanel("Correlation Plots",plotOutput("corellation",width = 

"100%", height =
 "900px"),width = 7 ),
                 tabPanel("Classification Tree", plotOutput("class",width = "100%", height = "900px"),width = 7))
           )


      )


 )

server.R

  function(input, output) {


   datasetInput <- reactive({
   switch(input$dataset,
          "Level 2" = as.matrix(base_level2),
          "Level 3" = as.matrix(base_level3) 
           )
   })

   output$table <- renderTable({(datasetInput)},rownames=TRUE,striped = TRUE,hover = TRUE, bordered = TRUE)

1 个答案:

答案 0 :(得分:0)

添加了一些假数据以使其正常工作,修复了HubertL在评论中发现的语法错误,并且工作正常:

library(shiny)
library(radarchart)
library(fmsb)

# Fake Data
x <- data.frame(skilz = c("Professional Skills","Technical Skills","Soft Skills"),a = c(1,2,3),b = c(11,12,13),row.names = "skilz")
scores <- c("Technical Junior" = 1,"Technical Senior" = 2)
base_level2 <- data.frame(x = c(1,2,3),y = c(4,5,6),z = c(7,8,9))
base_level3 <- data.frame(x = c(11,12,13),y = c(14,15,16),z = c(17,18,19))

# Define UI for random distribution application 

u <- shinyUI(pageWithSidebar(headerPanel('A competency profiling model for Software engineers'),
  sidebarPanel(
        selectInput("dataset","Choose Level of competence :",
                    choices = c("Level 2","Level 3"),selected = "Level 2"),

        radioButtons("selectedCategory","Make your choice of Skills : ",rownames(x),selected = "Professional skills"),
        checkboxGroupInput('selectedLevels','Who to include',
                           names(scores[]),selected = "Technical Junior"),
        sliderInput("Candidate","Candidate number:",
                    min = 1,max = 50,value = 1)),
     mainPanel(
        tabsetPanel(type = "tabs",
                    tabPanel('Level2/Level3 RCD frame',tableOutput("table")),
                    tabPanel("Candidates ACD frame ",tableOutput("candidate")),
                    tabPanel("Radar Plot #1",chartJSRadarOutput("radar",width = "450",height = "300"),width = 7),
                    tabPanel("Radar Plot #2",plotOutput("triangle",width = "100%",height = "900px"),width = 7),
                    tabPanel("Clustering Plots",plotOutput("cluster",width = "100%",height = "900px"),width = 7),
                    tabPanel("Correlation Plots",plotOutput("corellation",width = "100%",height =
        "900px"),width = 7),tabPanel("Classification Tree",plotOutput("class",width = "100%",height = "900px"),width = 7)))
  )
)

s <-
function(input,output) {


  datasetInput <- reactive({
    switch(input$dataset,
         "Level 2" = as.matrix(base_level2),
         "Level 3" = as.matrix(base_level3)
          )
  })

  output$table <- renderTable({(datasetInput()) },
                 rownames = TRUE,striped = TRUE,hover = TRUE,bordered = TRUE)
}

shinyApp( ui=u,server=s )

产量: enter image description here