Ошибка в: индексы столбцов должны быть не более 6, если положительные - Shiny App Error в R - PullRequest
1 голос
/ 16 марта 2019

Я пытаюсь создать блестящее приложение, используя библиотеку 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 Ответ

1 голос
/ 16 марта 2019
  1. req(gapminder$year) заставляет продолжить код, потому что gapminder$year не NULL.Вам нужно использовать input$year.Кроме того, вам необходимо указать, что указан континент: req(gapminder$continent)
  2. Вам нужно еще req перед вставкой textOuput, потому что input$cont пуст в начале
  3. Чтобы построитьИз базовой гистограммы вы можете передать вектор данных на график (pop). Сначала вам обязательно нужно отфильтровать выбранный год и континент

библиотека (блестящая)

library (gapminder)

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

Йо может играть с *Параметры 1028 * и fill (http://sape.inf.usi.ch/quick-reference/ggplot2/colour) для настройки вашего графика! Лучший!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...