RShiny中反应值的选择

时间:2017-02-01 06:17:48

标签: r shiny

我在Shiny中有一个小查询。我开发了一个应用程序,可以根据用户选择下拉调用/源脚本,被调用的脚本会创建一个预测变量作为时间序列,另一个时间序列(包含实际值和回归量的值)和一个包含MAPE预测值。我已经构建了2个输出(都是renderDygraph),我将分别提供预测和实际时间序列值。我写的代码如下:

server <- function(input, output) {
test <- function(var){

switch(var,
       "5184-7740" = source("5184-7740.R"),
       "5184-8554" = source("5184-8554.R"))
}
f1 <- reactive({
test(input$state)  
forecast # Contains the forecast values
})

f2 <- reactive({
test(input$state)  
rr # Contains the actual time series along with regressors
})

output$plot1<-renderDygraph ({
dygraph(dd(), main = "Inventory Level Forecasts") %>%
dyRangeSelector() %>%  
dyAxis("y", label = "Inventory Level in Millions")
}) 

output$plot2<-renderDygraph ({
dygraph(dd2(), main = "Actual Time Series") %>%
dyOptions(colors = RColorBrewer::brewer.pal(3, "Set2")) %>%
dyAxis("y", label = "Quantity in Millions")

})
}

现在我的查询是,是否可以从单个反应表达式调用预测和rr。因为目前,它正在执行两次并为每个输出图调用两次相同的脚本。有没有什么办法可以定义一个被动语句,并使用一些语句来调用预测变量和实际时间序列(例如:f1 $ forecast和f1 $ rr,但是$不起作用)。我计划动态显示MAPE值,所以我将定义一个renderText块,但我不想再次在反应式表达式中获取相同的脚本只是为了获取MAPE变量。我希望我已经清楚地解释了我的问题,如果问题不够清楚,请告诉我。非常感谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

f1 <- reactive({
    test(input$state)  
    list(forecast = forecast, rr = rr) 
})