Вы пропустили назначение функций ui
и server
объектам ui
и server
. Поэтому напишите ui <- FluidPage()
и server <- function(input, output)
вместо FluidPage()
и function(input, output)
. Это объясняет первые два кода ошибки. Наконец, в aes_string(x = "rdate", y = input$regionSel)
я думаю, вам нужно обратиться к input$region
: это id
виджета selectInput
. regionSel
- это идентификатор, связанный с uiOutput
. При использовании Dynami c ui вам нужно держать эти идентификаторы отдельно.
Как только вы исправите это, все будет работать. Вот простое блестящее приложение, которое сделает то, что вам нужно.
library(shiny)
library(dplyr)
library(tibble)
library(ggplot2)
data <- tibble(
DATE = seq.Date(from = as.Date("2020/01/01"), to = as.Date("2020/06/19"), by = "day"),
VAR1 = seq(1, 171, 1) + round(runif(n = 171, min = 0, max = 100), 0),
VAR2 = seq(1, 171, 1) + round(runif(n = 171, min = 0, max = 100), 0),
VAR3 = seq(1, 171, 1) + round(runif(n = 171, min = 0, max = 100), 0),
VAR4 = seq(1, 171, 1) + round(runif(n = 171, min = 0, max = 100), 0),
VAR5 = seq(1, 171, 1) + round(runif(n = 171, min = 0, max = 100), 0)
)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("Library Statistics"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
uiOutput("select")
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
output$select <- renderUI(
selectInput(inputId = "select_question",
label = "Type of question",
choices = data %>% select(-DATE) %>% colnames(.)
))
output$distPlot <- renderPlot({
req(input$select_question)
var <- input$select_question
ggplot(data = data, aes_string(x = "DATE", y = var)) +
geom_point() +
labs(x = "Date",
y = "Total Transactions",
title = "Library Data",
subtitle = "July 2020-June 2021")
})
}