I'm trying to build a shiny app, it is good to go but I am trying to put a column from my dataframe in selectinput, but so far didn't found a solution. I have a column with 505 factors, called AAPL, AAL, etc.. I want these factors in my selectinput, so that you can choose from these 505 factors, This is my code right now, and the column name that I'm trying to get in selectinput is bcl-data$Name.
library(shiny)
library(tidyverse)
library(shinythemes)
library(ggplot2)
library(dplyr)
bcl <- read.csv("bcl-data.csv", stringsAsFactors = FALSE)
# Define UI for application that draws a histogram
ui <- fluidPage(theme = shinytheme("darkly"),
# Application title
titlePanel("Overzicht S&P 500 Aandelen"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
sliderInput(inputId = "priceInput", label = "close", min = 0, max = 2050, value = c(0,300), pre = "$"),
selectInput(inputId = "typeInput", label = "Name", choices = (bcl-data$Name)),
dateRangeInput(inputId = "dateInput",
label = "date",
start = "2013/02/08",
end = "2013/03/08",
format = "yy/mm/dd")
),
# Show a plot of the generated distribution
mainPanel(
tabsetPanel(
tabPanel("Plot", plotOutput("Plot")),
tabPanel("Datatable", tableOutput("Datatable"))
)
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
output$Plot <- renderPlot({
filtered <- bcl %>%
filter(close >= input$priceInput[1]) %>%
filter(close <= input$priceInput[2]) %>%
filter(date >= input$dateInput[1] & date <= input$dateInput[2]) %>%
filter(bcl-data$Name == input$typeInput)
filtered
ggplot(filtered, aes(x = date, y = close, color = Name)) +
geom_point()
})
output$Datatable <- renderTable({
filtered <-
bcl %>%
filter(close >= input$priceInput[1]) %>%
filter(close <= input$priceInput[2]) %>%
filter(date >= input$dateInput[1] & date <= input$dateInput[2]) %>%
filter(bcl-data$Name == input$typeInput)
filtered
})
}
# Run the application
shinyApp(ui = ui, server = server)
Comment from above: I think you're error is with
bcl-data$Name
. Whilebcl-data.csv
is the file you loaded, you saved it as the objectbcl
- meaning it should simply bebcl$Name
.selectInput(inputId = "typeInput", label = "Name", choices = bcl$Name)
In your filters, you can also simply havefilter(Name ==
because you're already feeding thebcl
data/object through the pipe.To make sure we remove duplicate values, we can include
unique
.Here's what I think should work (cannot test because no data).