So I'm trying to create this output, but in dashboard form using Shiny. It should be noted that this is my second week using Shiny, so I'm very inexperienced.
Here is my code:
library(shiny)
library(shinydashboard)
library(ggplot2)
library(dplyr)
library(gapminder)
gm <- gapminder
gm <- transform(gm, pop = as.numeric(pop))
cgm <- gm %>% group_by(continent,year) %>% summarise(totpop=sum(pop),avglifeExp=sum(pop*lifeExp)/totpop,avggdpPercap=sum(pop*gdpPercap)/totpop, numCountries=n())
body <- dashboardBody(
fluidRow(
tabBox(
title = "Population",
id = "proj", width=12,
tabPanel("Visualization", plotOutput("ggp"),
tabPanel("GapMinder Data", dataTableOutput("table")),
tabPanel("Aggregated GapMinder Data", dataTableOutput("table1"))
)
)
),
fluidRow(sliderInput("slider1", label = h3("Year"), min = 1952,
max = 2007, value = 1952, step = 5, sep ="", width="100%"))
)
# This is UI, it has a clean look because we defined body up above.
ui <- dashboardPage(
dashboardHeader(title = "Module 2"),
dashboardSidebar(
helpText("GapMinder Data: Worldwide average life expectancy, population and GPD per Capita 1952-2007"),
menuItem),
body
)
# This is server function is the same as in the layout practice.
server <- function(input, output) {
output$tabPanelSelected <- renderText({
input$proj
})
output$ggp <- renderPlot({
p <- ggplot(data=subset(gm, year==input$Year), aes(x=lifeExp)) + geom_density(alpha=.2, fill="red") + xlab("Life Expectancy")
q <- ggplot(data=subset(cgm,year==input$Year), aes(x=continent, y=totpop, fill=continent)) + geom_bar(stat="identity")
r <- ggplot(data=subset(cgm,year==input$Year), aes(x=continent, y=avggdpPercap, fill=continent)) + geom_bar(stat="identity")
print(p)
print(q)
print(r)
})
output$table <- renderDataTable({gm})
output$table1 <- renderDataTable({cgm})
}
shinyApp(ui=ui, server=server)
Here is the error message I get: Error Message
So I can't figure out what's going with my code in the body. I think the ui code is ok and I'm almost certain that my server code is out of syntax, but the error message doesn't really allow me to decode it. Any ideas?