中的错误:如果为正,则列索引必须最多为6-R中的Shiny App Error

时间:2019-03-16 00:38:46

标签: r shiny

我正在尝试使用shiny库和gapminder作为我的数据集来构建闪亮的应用程序。我正在构建一个小型应用程序,用户可以在侧面板上选择特定的洲,然后在闪亮的应用程序的主面板上显示所选洲际人口与年份的直方图。

我正在使用以下代码生成直方图。但是,当我运行以下代码时,我在R中得到一个错误,该错误是

  

如果正数列索引必须为6 ...

我不确定这意味着什么。此外,我已经附上了我的预期输出。

我的Rcode:

library(shiny)
library(gapminder)

ui<-fluidPage(
  titlePanel("Population Analysis"),
  sidebarLayout(sidebarPanel(
    selectInput(inputId = 'cont',
                label = "Select Continent:",
                choices = gapminder$continent),
    selectInput(inputId = 'year',
                label = "Select Year:",
                choices = gapminder$year)
  ),

  mainPanel(
    paste('Aggregate population by year'),
   textOutput("txtoutput"),
   plotOutput("continentplot")
  )
)
)

server<-function(input,output){
  output$txtoutput<-renderText({
    paste(input$cont)
  })
  output$continentplot<-renderPlot({
    req(gapminder$year)
  hist(gapminder[gapminder$pop])
  })
}
shinyApp(ui=ui, server=server)

错误:

warning: Error in : Column indexes must be at most 6 if positive, not 8425333, 9240934, 10267083, 11537966, 13079460, 14880372, 12881816, 13867957, 16317921, 22227415, 25268405, 31889923, 1282697, 1476505, 1728137, 1984060, 2263554, 2509048, 2780097, 3075321, 3326498, 3428038, 3508512, 3600523, 9279525, 10270856, 11000948, 12760499, 14760787, 17152804, 20033753, 23254956, 26298373, 29072015, 31287142, 33333216, 4232095, 4561361, 4826015, 5247469, 5894858, 6162675, 7016384, 7874230, 8735988, 9875024, 10866106, 12420476, 17876956, 19610538, 21283783, 22934225, 24779799, 26983828, 29341374, 31620918, 33958947, 36203463, 38331121, 40301927, 8691212, 9712569, 10794968, 11872264, 13177000, 14074100, 15184200, 16257249, 17481977, 18565243, 19546792, 20434176, 6927772, 6965860, 7129864, 7376998, 7544201, 7568430, 7574613, 7578903, 7914969, 8069876, 8148312, 8199783, 120447, 138655, 171863, 202182, 230800, 297410, 377967, 454612, 529491, 598561, 656397, 708573, 46886859, 51365468, 56839289, 62821884, 70 [... truncated]
  179: <Anonymous>
Warning: Error in : Column indexes must be at most 6 if positive, not 8425333, 9240934, 10267083, 11537966, 13079460, 14880372, 12881816, 13867957, 16317921, 22227415, 25268405, 31889923, 1282697, 1476505, 1728137, 1984060, 2263554, 2509048, 2780097, 3075321, 3326498, 3428038, 3508512, 3600523, 9279525, 10270856, 11000948, 12760499, 14760787, 17152804, 20033753, 23254956, 26298373, 29072015, 31287142, 33333216, 4232095, 4561361, 4826015, 5247469, 5894858, 6162675, 7016384, 7874230, 8735988, 9875024, 10866106, 12420476, 17876956, 19610538, 21283783, 22934225, 24779799, 26983828, 29341374, 31620918, 33958947, 36203463, 38331121, 40301927, 8691212, 9712569, 10794968, 11872264, 13177000, 14074100, 15184200, 16257249, 17481977, 18565243, 19546792, 20434176, 6927772, 6965860, 7129864, 7376998, 7544201, 7568430, 7574613, 7578903, 7914969, 8069876, 8148312, 8199783, 120447, 138655, 171863, 202182, 230800, 297410, 377967, 454612, 529491, 598561, 656397, 708573, 46886859, 51365468, 56839289, 62821884, 70 [... truncated]
  179: <Anonymous>

预期输出:

enter image description here

我是R和Shiny的新手

1 个答案:

答案 0 :(得分:1)

  1. req(gapminder$year)使代码继续,因为gapminder$year不是NULL。您需要使用input$year。此外,您还需要指定一个大洲:req(gapminder$continent)
  2. 在粘贴req之前,您需要另一个textOuput,因为input$cont开头是空的
  3. 要绘制基本直方图,您只能将数据向量传递到图(pop)。首先,请确保您需要针对所选的年份和大洲进行过滤

图书馆(闪亮)

库(gapminder)

库(dplyr)

ui<-fluidPage(
  titlePanel("Population Analysis"),
  sidebarLayout(sidebarPanel(
    selectInput(inputId = 'cont',
                label = "Select Continent:",
                choices = gapminder$continent),
    selectInput(inputId = 'year',
                label = "Select Year:",
                choices = gapminder$year)
  ),

  mainPanel(
    paste('Aggregate population by year'),
    textOutput("txtoutput"),
    plotOutput("continentplot")
  )
  )
)

server<-function(input,output){
  output$txtoutput<-renderText({
    req(input$cont)
    paste(input$cont)
  })
  output$continentplot<-renderPlot({
    req(input$year)
    req(input$cont)
    dataHist <- gapminder %>% 
      filter(continent==input$cont) %>% 
      filter(year==as.integer(input$year)) %>%
      select(pop)
    hist(dataHist$pop)
  })
}
shinyApp(ui=ui, server=server)

对于第二个问题,您可以使用以下代码:

library(shiny)
library(ggplot2)
library(gapminder)
library(dplyr)
ui<-fluidPage(
  titlePanel("Population Analysis"),
  sidebarLayout(sidebarPanel(
    selectInput(inputId = 'cont',
                label = "Select Continent:",
                choices = gapminder$continent)
  ),

  mainPanel(
    paste('Aggregate population by year'),
    textOutput("txtoutput"),
    plotOutput("continentplot")
  )
  )
)

server<-function(input,output){
  output$txtoutput<-renderText({
    req(input$cont)
    paste(input$cont)
  })
  output$continentplot<-renderPlot({
    req(input$cont)
    dataHist <- gapminder %>% 
      filter(continent==input$cont)  %>%
      group_by(year)%>%
      select(pop,year)

    ggplot(data=dataHist, aes(x=year, y=pop)) + 
      labs(y="Population") +
      geom_bar(stat="identity", fill="purple") + 
      scale_x_continuous(name ="Year",breaks = seq(1952,2007,5))+
      theme(
        panel.background = element_rect(fill = "plum1",
                                        colour = "plum1",
                                        size = 0.5, linetype = "solid"),
        panel.grid.major = element_line(size = 0.5, linetype = 'solid',
                                        colour = "white"), 
        panel.grid.minor = element_line(size = 0.25, linetype = 'solid',
                                        colour = "white")
      )

  })
}
shinyApp(ui=ui, server=server)

Yo可以使用colourfill参数(http://sape.inf.usi.ch/quick-reference/ggplot2/colour)来定制您的绘图! 最好!