2015-01-10 3 views
2

Я пытаюсь создать блестящее приложение R, в котором пользователь вводит 2 даты: дату начала и дату окончания (при условии, что пользователь выберет одну из дат для определенной недели). Выбирая даты, когда пользователь сможет увидеть, сколько он будет продавать каждый элемент из списка предметов на следующей неделе в те дни. Мне предоставили данные о том, какой процент от общего объема продаж происходит каждый день в течение недели. Используя это и используя данные о продажах каждого элемента с прошлой недели, я попытался создать приложение. Однако я думаю, что делаю некоторые ошибки при использовании реактивного выражения. Любая помощь будет оценена. Я предоставил код ниже.Использование нескольких реактивных значений

ui.R 
library(shiny) 
shinyUI(fluidPage(
    sidebarLayout(
    sidebarPanel(
     dateInput('Start_Date',label = "starting on:",value = Sys.Date()) 
     dateInput('End_Date',label = "Ending on:",value = Sys.Date()) 
    ), 
    mainPanel(
     tableoutput("mytable") 
    ) 
) 
)) 

server.R 
library(shiny) 
library(stats) 
shinyServer(function(input, output) { 
    Days<-c("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday") 
    Percent_sales_by_day<-c(.10,.14,.14,.14,.14,.17,.17) 
    Data_days<-data.frame(Days,Percent) 
    items_sold<-c("A","B","C","D") 
    sales_last_week<-c("100","200","300","800") 
    Data_sales<-data.frame(items_sold,sales_last_week) 
    Day_vector<-reactive({ 
    weekdays(seq(as.Date(input$Start_Date),as.Date(input$End_Date),by = "days")) 
    }) 
    Daily_split_vector<-reactive({ 
    library(dplyr) 
    Data_days%>% 
     filter(Days %in% Day_vector()) 
    Data_days$Percent_sales_by_day 
    }) 
    Daily_split_value<-reactive({ 
    sum(Daily_split_vector()) 
    }) 
    Forecast<-reactive({ 
    Data_sales%>% 
     mutate(sales_last_week=sales_last_week* Daily_split_value()) 
    }) 
    output$mytable<-renderTable({ 
    Forecast() 
    }) 
    }) 

ответ

3

Я не на 100% проясняю вашу основную цель, но независимо от того, какой код ниже работает для меня. Я попытался прокомментировать все изменения, которые я сделал - они были в основном незначительными синтаксическими ошибками, но дайте мне знать, если вы хотите, чтобы я прояснил все.


ui.R:

library(shiny) 
## 
shinyUI(fluidPage(
    sidebarLayout(
    sidebarPanel(

     dateInput(
     'Start_Date', 
     label = "starting on:", 
     value = Sys.Date() 
    ), ## added comma 
     dateInput(
     'End_Date', 
     label = "Ending on:", 
     value = Sys.Date()) 
    ), 

    mainPanel(
     tableOutput("mytable") ## 'tableOutput' not 'tableoutput' 
    ) 

) 
)) 

server.R:

library(shiny) 
library(dplyr) 
options(stringsAsFactors=F) ## try to avoid factors unless you 
          ## specifically need them 
## 
shinyServer(function(input, output) { 

    Days <- c(
    "Sunday","Monday","Tuesday","Wednesday", 
    "Thursday","Friday","Saturday") 

    Percent_sales_by_day <- c(
    .10,.14,.14,.14,.14,.17,.17) 

    Data_days <- data.frame(
    Days, 
    Percent_sales_by_day) ## changed from 'Percent' 

    items_sold <- c("A","B","C","D") 

    sales_last_week <- c(
    100,200,300,800) ## changed from character (???) to numeric type 

    Data_sales <- data.frame(
    items_sold, 
    sales_last_week) 

    Day_vector <- reactive({ 
    weekdays(
     seq.Date(
     as.Date(input$Start_Date), 
     as.Date(input$End_Date), 
     by = "day")) 
    }) 

    Daily_split_vector <- reactive({ 
    Data_days %>% 
     filter(Days %in% Day_vector()) %>% ## added pipe 
    ## Data_days$Percent_sales_by_day ## changed this line 
     select(Percent_sales_by_day) ## to this line 
    }) 

    Daily_split_value <- reactive({ 
    sum(Daily_split_vector()) 
    }) 

    Forecast <- reactive({ 
    Data_sales%>% 
     mutate(
     sales_last_week=sales_last_week* Daily_split_value()) 
    }) 

    output$mytable <- renderTable({ 
    Forecast() 
    }) 
}) 
+0

Спасибо. Это то, что я хотел –

Смежные вопросы