【发布时间】:2020-05-19 17:17:37
【问题描述】:
当日期范围更改时,我已经能够使用tidyverse 更改数据框中的值,但值框中的汇总值没有更改。
df <- data.frame("Ship Date" = c("2020-01-01", "2020-01-02", "2020-01-03", "2020-01-04"),
"Revenue" = c(100, 200, 300, 400), "Load Volume" = c(10, 12, 14, 18))
ui <- fluidPage(
dateRangeInput(
inputId = "daterange",
label = "Select the date range",
start = min(df$`Ship Date`),
end = max(df$`Ship Date`),
min = min(df$`Ship Date`),
max = max(df$`Ship Date`),
format = "yyyy/mm/dd",
separator = "-"
),
textOutput("startdate"),
textOutput("enddate"),
textOutput("range"),
dashboardbody(
fluidRow(box(valueBoxOutput("totalrevenue"), title = "Revenue")
,box(valueBoxOutput("revperload"), title = "Revenue Per Load")
))
server <- function(input, output, session) ({
total.revenue <- dollar(sum(df$Revenue)
rev.perload <- dollar(sum(df$Revenue) / sum(df$`Load Volume`))
# date range
output$startdate <- renderText({
as.character(input$daterange[1])
})
output$enddate <- renderText({
as.character(input$daterange[2])
})
output$range <- renderText({
paste("Selected date range is ", input$daterange[1], "to", input$daterange[2])
})
output$totalrevenue <- renderValueBox({
total.revenue = subset(df, df$`Ship Date` >= input$daterange[1] & df$`Ship Date`<=input$daterange[2])
valueBox(
formatC(total.revenue, format = "d", big.mark = ',')
,paste(NULL)
)
})
output$revperload <- rendervalueBox({
rev.perload = subset(df, df$`Ship Date` >= input$daterange[1] & df$`Ship Date` <= input$daterange[2])
valueBox(
formatC(total.revenue, format = "d", big.mark = ',')
,paste(NULL)
)
})
})
shinyApp(ui, server)
当仪表板中的日期范围发生变化时,两个值框没有反应。
【问题讨论】:
-
有很多代码拼写错误导致它无法运行。您缺少一些括号,rendervalueBox 应该是 renderValueBox 等。
标签: r shiny dplyr shinydashboard