'Error - Using R shiny app to produce a timeseries and three widgets in the side panel

I am pretty new to Rshiny and need help (please don't be too brutal, I am trying). I want to build a shiny app displaying a time series showing number of users from a specific country over a certain period. So a sidebar panel with 3 widgets:

  1. "Country" - factor list of 3 countries
  2. "User" - factor list of three types of users. Select box where they are able to choose between one or all three user types
  3. "Date" calendar allowing you to pick a date between 2020-06-01 - 2021-11-01

Then this will produce one output which is a ggplot line time series showing users from the chosen country. With the provided code I've only been able show the 3 widgets but the plot itself results the error:

Error in output$lineplot <- renderPlot({ : object 'output' not found

df

Country         date        Users              Count
Angola          2020-06-01  New_users          4
Angola          2020-06-01  Returning_Users    0
Angola          2020-06-01  Active_Users       4
Angola          2020-08-01  New_users          5
Angola          2020-08-01  Returning_Users    2
Angola          2020-08-01  Active_Users       7
Angola          2020-10-01  New_users          1
Angola          2020-10-01  Returning_Users    0
Angola          2020-10-01  Active_Users       1
Angola          2020-11-01  New_users          2
Angola          2020-11-01  Returning_Users    5
Angola          2020-11-01  Active_Users       7
Angola          2020-12-01  New_users          0
Angola          2020-12-01  Returning_Users    6
Angola          2020-12-01  Active_Users       6
Angola          2021-01-01  New_users          6
Angola          2021-01-01  Returning_Users    7
Angola          2021-01-01  Active_Users       13
Angola          2021-02-01  New_users          4
Angola          2021-02-01  Returning_Users    4
Angola          2021-02-01  Active_Users       8
Angola          2021-03-01  New_users          5
Angola          2021-03-01  Returning_Users    3
Angola          2021-03-01  Active_Users       8
Angola          2021-06-01  New_users          1
Angola          2021-06-01  Returning_Users    0
Angola          2021-06-01  Active_Users       1
Angola          2021-07-01  New_users          1
Angola          2021-07-01  Returning_Users    2
Angola          2021-07-01  Active_Users       3
Angola          2021-10-01  New_users          15
Angola          2021-10-01  Returning_Users    14
Angola          2021-10-01  Active_Users       29
Angola          2021-11-01  New_users          44
Angola          2021-11-01  Returning_Users    37
Angola          2021-11-01  Active_Users       81
Kenya           2020-06-01  New_users          32
Kenya           2020-06-01  Returning_Users    0
Kenya           2020-06-01  Active_Users       32
Kenya           2020-08-01  New_users          26
Kenya           2020-08-01  Returning_Users    25
Kenya           2020-08-01  Active_Users       51
Kenya           2020-10-01  New_users          14
Kenya           2020-10-01  Returning_Users    20
Kenya           2020-10-01  Active_Users       34
Kenya           2020-11-01  New_users          9
Kenya           2020-11-01  Returning_Users    17
Kenya           2020-11-01  Active_Users       26
Kenya           2020-12-01  New_users          0
Kenya           2020-12-01  Returning_Users    11
Kenya           2020-12-01  Active_Users       11
Kenya           2021-01-01  New_users          17
Kenya           2021-01-01  Returning_Users    42
Kenya           2021-01-01  Active_Users       59
Kenya           2021-02-01  New_users          28
Kenya           2021-02-01  Returning_Users    37
Kenya           2021-02-01  Active_Users       65
Kenya           2021-03-01  New_users          27
Kenya           2021-03-01  Returning_Users    20
Kenya           2021-03-01  Active_Users       47
Kenya           2021-06-01  New_users          162
Kenya           2021-06-01  Returning_Users    41
Kenya           2021-06-01  Active_Users       203
Kenya           2021-07-01  New_users          187
Kenya           2021-07-01  Returning_Users    68
Kenya           2021-07-01  Active_Users       255
Kenya           2021-10-01  New_users          155
Kenya           2021-10-01  Returning_Users    64
Kenya           2021-10-01  Active_Users       219
Kenya           2021-11-01  New_users          33
Kenya           2021-11-01  Returning_Users    49
Kenya           2021-11-01  Active_Users       82
South Africa    2020-05-01  New_users          19
South Africa    2020-05-01  Returning_Users    0
South Africa    2020-05-01  Active_Users       19
South Africa    2020-06-01  New_users          40
South Africa    2020-06-01  Returning_Users    9
South Africa    2020-06-01  Active_Users       49
South Africa    2020-07-01  New_users          41
South Africa    2020-07-01  Returning_Users    13
South Africa    2020-07-01  Active_Users       54
South Africa    2020-08-01  New_users          64
South Africa    2020-08-01  Returning_Users    20
South Africa    2020-08-01  Active_Users       84
South Africa    2020-10-01  New_users          58
South Africa    2020-10-01  Returning_Users    13
South Africa    2020-10-01  Active_Users       71
South Africa    2020-12-01  New_users          105
South Africa    2020-12-01  Returning_Users    36
South Africa    2020-12-01  Active_Users       141
South Africa    2021-01-01  New_users          47
South Africa    2021-01-01  Returning_Users    37
South Africa    2021-01-01  Active_Users       84
South Africa    2021-02-01  New_users          213
South Africa    2021-02-01  Returning_Users    54
South Africa    2021-02-01  Active_Users       267
South Africa    2021-03-01  New_users          224
South Africa    2021-03-01  Returning_Users    66
South Africa    2021-03-01  Active_Users       290
South Africa    2021-06-01  New_users         122
South Africa    2021-06-01  Returning_Users   94
South Africa    2021-06-01  Active_Users      216
South Africa    2021-07-01  New_users         1428
South Africa    2021-07-01  Returning_Users   78
South Africa    2021-07-01  Active_Users      1506
South Africa    2021-10-01  New_users         457
South Africa    2021-10-01  Returning_Users   433
South Africa    2021-10-01  Active_Users      890
South Africa    2021-11-01  New_users         96
South Africa    2021-11-01  Returning_Users   200
South Africa    2021-11-01  Active_Users      296

Code

# Load packages -----------------------------------------------------
library(shiny)
library(shinythemes)
library(ggplot2)
library(dplyr)
library(readxl)

# Define UI ---------------------------------------------------------
ui <- fluidPage(titlePanel("Users"),
                sidebarLayout(
                  sidebarPanel(
                    # Select type of trend to plot
                    selectInput(inputId = "type", label = strong("Trend index"),
                                choices = unique(df$Country),
                                selected = "Angola"),
                    
                    checkboxGroupInput(inputId = "selected_user_type",
                                       label = "Select user type",
                                       choices =c ("Active_Users","New_users","Returning_User"),
                                       selected = "New_users"),
                    
                    # Select date range to be plotted
                    dateRangeInput("date", strong("Date range"), 
                                   start = "2020-06-01", end = "2021-11-01",
                                   min = "2020-06-01", max = "2021-11-01"),
                  ),
                  # Output: Description, lineplot, and reference
                  mainPanel(
                    plotOutput(outputId = "lineplot", height = "300px"),
                    textOutput(outputId = "desc"),
                    tags$a(href = "https://www.google.com/finance/domestic_trends", "Source: Google Domestic Trends", target = "_blank")
                  )
                )
)

# Define server function --------------------------------------------
server <- function(input, output) {
  
  # Subset data
  
  users_subset <- reactive({ 
    req(input$selected_user_type) 
    filter(df, Users %in% input$selected_user_type)
  }) 
  
  
  selected_trends <- reactive({
    req(input$date)
    validate(need(!is.na(input$date[1]) & !is.na(input$date[2]), "Error: Please provide both a start and an end date."))
    validate(need(input$date[1] < input$date[2], "Error: Start date should be earlier than end date."))
    df%>%
      filter(
        users_subset,
        date > as.POSIXct(input$date[1]) & date < as.POSIXct(input$date[2]
        ))
  })
  
  # Create scatterplot object the plotOutput function is expecting
}

output$lineplot <- renderPlot({
  ggplot(data = selected_trends, aes_string(x = selected_trends()$date, selected_trends()$Count)) +
    geom_line(alpha = input$alpha) +
    labs(x = "Time (Month)", y = "Users")
})

# Create the Shiny app object ---------------------------------------
shinyApp(ui = ui, server = server)

enter image description here



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source