【发布时间】:2019-02-10 01:45:04
【问题描述】:
所以我正在尝试创建此输出,但使用 Shiny 以仪表板形式。需要注意的是,这是我使用 Shiny 的第二周,所以我非常缺乏经验。
这是我的代码:
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)
这是我收到的错误消息:Error Message
所以我无法弄清楚我的代码在正文中发生了什么。我认为 ui 代码没问题,我几乎可以肯定我的服务器代码不符合语法,但错误消息并不允许我对其进行解码。有任何想法吗?
【问题讨论】:
标签: r shiny shinydashboard