Shiny R的条形图错误

时间:2014-12-31 17:00:13

标签: r shiny

我无法使用闪亮的应用程序解决错误以创建条形图。显示的错误没有参数传递。代码如下所示。

Ui.R

shinyUI(fluidPage(
  titlePanel("An Overview of my skillsets"),

  sidebarLayout(
    sidebarPanel(                  
                   selectInput("dataset", "Select Company", 
                               choices = c("Accenture", "Auroch", "Quintiles", "Others")),

                   numericInput("obs", "Number of observations to view:", 10) ),
    mainPanel(plotOutput(""))
  )
))

Server.R

library(shiny)

shinyServer(function(input, output) {

  TechSkills <- c( "X", "Y", "Z", "A", "B", "C")

  TS_ACC <-c(25,26,22,12,22,27)
  TS_AUR <- c(8,6,7,5,4,7)
  TS_QUIN <- c(12,12,14,24,17,27)
  ACCENTURE=data.frame(TechSkills, TS_ACC)
  AUROCH=data.frame(TechSkills, TS_AUR)
  QUINTILES=data.frame(TechSkills, TS_QUIN)

  datasetInput <- reactive({
    switch(input$dataset,
           "Accenture" = ACCENTURE,
           "Auroch" = AUROCH,
           "Quintiles" = QUINTILES,
            "Others" =OTHERS)
  })
  output$dataset <- renderPlot({
    barplot(data=dataset)
  })
 })

2 个答案:

答案 0 :(得分:1)

此代码中有几件事可能有问题:

  1. plotOutput(“”)应该有一个outputId,即'dataset'
  2. barplot不接受参数数据,你应该提供'height'和'arg.names'
  3. 所以,代码看起来应该是这样的:

    <强> ui.R

    shinyUI(fluidPage(
      titlePanel("An Overview of my skillsets"),
    
      sidebarLayout(
        sidebarPanel(                  
                   selectInput("dataset", "Select Company", 
                               choices = c("Accenture", "Auroch", "Quintiles", "Others")),
    
                   numericInput("obs", "Number of observations to view:", 10) ),
    mainPanel(plotOutput('dataset'))
      )
    ))
    

    <强> server.R

    library(shiny)
    
    TechSkills <- c( "X", "Y", "Z", "A", "B", "C")
    
    TS_ACC <-c(25,26,22,12,22,27)
    TS_AUR <- c(8,6,7,5,4,7)
    TS_QUIN <- c(12,12,14,24,17,27)
    ACCENTURE=data.frame(TechSkills, TS_ACC)
    AUROCH=data.frame(TechSkills, TS_AUR)
    QUINTILES=data.frame(TechSkills, TS_QUIN)
    
    
    shinyServer(function(input, output) {
    
    
      datasetInput <- reactive({
        switch(input$dataset,
               "Accenture" = ACCENTURE,
               "Auroch" = AUROCH,
               "Quintiles" = QUINTILES,
                "Others" =OTHERS)
      })
      output$dataset <- renderPlot({
        d <- datasetInput()
        barplot(height=d[,2],names.arg=d[,1])
      })
     })
    

答案 1 :(得分:1)

一分钟太晚了,但这里是一个带有鲜为人知的函数setNames

的变体
  output$mybarplot <- renderPlot({
    d1 = datasetInput()
    barplot(setNames(d1[,2],d1[,1]))
  })