Search code examples
rshinyquandl

R Shiny: How to take dates from "Date Range", plug them into Quandl, and use the resulting data to generate a graph


I started building my first shiny app and it ended up being more complicated than expected (learning!). Unfortunately, I've managed to Google-fu a ton of little errors into a situation in which there are no errors, it just returns a blank graph.

The Code: (server)

library(ggplot2)
library(Quandl)
library(methods)

shinyServer(
  function(input, output) {
# see (https://stackoverflow.com/questions/22834778/r-shiny-daterangeinput-format)

start_date2<-reactive({format(input$date_range[1])})
end_date2<-reactive({format(input$date_range[2])})

psuedonym<-data.frame(Date=as.Date(character()),
                      Value=integer(),
                      stringsAsFactors=FALSE)

psuedonym<-reactive({Quandl("ZILL/Z94550_A", start_date2, end_date2, type="raw")})

output$qplot<-renderPlot({reactive({plot(psuedonym$Date, psuedonym$Value)})})
})

(ui)

library(shiny)
shinyUI(fluidPage(
    titlePanel("My Shiny App"),

    sidebarLayout(position="right", 
        sidebarPanel(
        plotOutput("qplot")
        ),
    mainPanel(dateRangeInput("date_range", 
        label=h3("Date Range"), start="2010-01-01", end="2015-01-01",
    )
))))

What I want: I want the user to be able to input dates in the Date Range, input those variables into the Quandl code (https://www.quandl.com/help/r), and then pull that data for them and generate a simple graph. Later on I'd like to add the ability to define the zip code and the variables. This, for example, works:

library(ggplot2)
library(Quandl)
library(methods)

shinyServer(
  function(input, output) {

    start_date="2010-01-01"
    end_date="2015-01-01"
    psuedonym=Quandl("ZILL/Z90001_A", start_date, end_date, type="raw")
    output$qplot<-renderPlot({plot(psuedonym)})

What I think is going wrong: This(R: error in qplot from ggplot2: argument "env" is missing, with no default) and a previous error message makes me think that something has gone wrong with the data frame, that it's not getting the Quandl data somehow.

Thanks in advance for any help


Solution

  • i think you misunderstand how shiny works.

    Have a look this tutorial. http://shiny.rstudio.com/tutorial/lesson4/

    ui.R

    shinyUI(fluidPage(
      sidebarLayout(
        sidebarPanel(dateRangeInput("date_range", label=h3("Date Range"),start="2010-01-01", end="2015-01-01")
        ),
        mainPanel(
          plotOutput("qPlot")
        )
      )
    ))
    

    server.R

    shinyServer(function(input, output) {
      output$qPlot <- renderPlot({ 
        psuedonym<-Quandl("ZILL/Z94550_A", input$date_range[1], input$date_range[2], type="raw")
        plot(psuedonym)
      }) 
    }
    )