2016-04-14 2 views
0

Я пытаюсь создать приложение R, используя shiny. Он состоит из sliderInput, который позволяет пользователю выбирать дату (минимальную и максимальную дату) для подмножества данных, которые будут отображаться в виде гистограммы ggplot.Проблемы с подмножеством data.frame с daterange для блестящего вывода ggplot

У меня возникают проблемы с получением входных значений для подмножества data.frame, который затем будет использоваться для построения графика. У меня есть коды подмножества с помощью элемента управления R, и он генерирует правильные данные, однако моя попытка использовать входные значения в качестве ограничивающего фактора приводит меня к проблемам при попытке запустить его в приложении.

моих кодов выглядит следующим образом:

ui.R заявил

library(shiny) 

#define shiny UI 
shinyUI(fluidPage(
titlePanel("Life Span"), 
sidebarLayout(
    sidebarPanel(
    sliderInput("days", 

       "Duration:", 
       min = start, 
       max = last, 
       value = c(start,last), 
       timeFormat = "%F %T") 
    ), 
    mainPanel(
    plotOutput("timeline") 
) 
) 
)) 

server.R

library(shiny) 
library(RMySQL) 
library(quantmod) 
library(ggplot2) 


shinyServer(function(input, output) { 

    #here i create function to scope data 
    getDataSubSet <- function(dataFrame, column2Filter, rangeStart, rangeEnd){ 
     rangeStart1<-strptime(rangeStart,format = "%Y-%m-%d %H:%M:%S") 
     rangeEnd1<-strptime(rangeEnd,format = "%Y-%m-%d %H:%M:%S") 
     dataFrame[dataFrame[column2Filter] >= rangeStart1 & dataFrame[column2Filter] <= rangeEnd1,] 
    } 


    output$timeline <- renderPlot({ 
     #to create reactive data.... 
     Candy_Sales_Working <- reactive({ 
      getDataSubSet(Candy_Sales, "Sales_date", input$days[1], input$days[2]) 
     }) 
     ggplot(Candy_Sales_Working(), aes(Candy_Sales_Working()[candyType])) + 
      geom_bar(stat="count") 

    }) 
}) 

global.R

library(RMySQL) 

con <- dbConnect(RMySQL::MySQL(), user = "user", password = "pw", dbname = "candy", 
       host = "candy.com", port = ....) 
Candy_Sales = dbGetQuery(conn = con, statement = "Select * from candy_sales") 
Candy_Sales <- transform(Tape_Span, 
Sales_Date = as.POSIXlt(strptime(Sales_Date, "%Y-%m-%d %H:%M:%S"))) 
Candy_Sales_Working <- Candy_Sales 
start = strptime(min(Candy_Sales$Sales_Date), format = "%Y-%m-%d %H:%M:%S") 
last = strptime(max(Candy_Sales$Sales_Date), format = "%Y-%m-%d %H:%M:%S") 
candy_types = unique(Candy_Sales$candyType) 

ошибка сравнение эти Типы не реализована

+0

жаль, что я забыл стат ошибку, это «сравнение этих типов не реализуется» – sohbk

+0

В строке 'ggplot' кажется, что это должно быть' ggplot (Tape_Span_Working(), aes ... ' –

+0

Это опечатка при передаче кода здесь, спасибо, указав его – sohbk

ответ

0

Нашли ошибку, это было связано с dataFrame[column2Filter] должна быть записана в виде dataFrame[[column2Filter]] вместо

dataFrame[dataFrame[[column2Filter]] >= rangeStart1 & dataFrame[[column2Filter]] <= rangeEnd1,]