我正在尝试使用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>
预期输出:
我是R和Shiny的新手
答案 0 :(得分:1)
req(gapminder$year)
使代码继续,因为gapminder$year
不是NULL
。您需要使用input$year
。此外,您还需要指定一个大洲:req(gapminder$continent)
req
之前,您需要另一个textOuput
,因为input$cont
开头是空的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可以使用colour
和fill
参数(http://sape.inf.usi.ch/quick-reference/ggplot2/colour)来定制您的绘图!
最好!