ShinydaShashboard中的仪表板

ShinydaShashboard中的仪表板,r,shiny,dygraphs,shiny-server,R,Shiny,Dygraphs,Shiny Server,我第一次使用shinydashboard,它非常棒。然而,我遇到了一个奇怪的问题。我的浏览器上运行以下代码。然而,当部署到shinyapps.io上时,它就是拒绝工作。仪表板用于执行3项操作: 1.可视化因变量 2.在带有红色垂直线的图形上,使用日期假人自动标记峰值 3.参见所选的自变量和虚拟变量 这是shinyapps.io中应用程序的链接 代码如下 ui.R library(shiny) library(shinydashboard) library(dygraphs) dashboardP

我第一次使用shinydashboard,它非常棒。然而,我遇到了一个奇怪的问题。我的浏览器上运行以下代码。然而,当部署到shinyapps.io上时,它就是拒绝工作。仪表板用于执行3项操作:
1.可视化因变量
2.在带有红色垂直线的图形上,使用日期假人自动标记峰值
3.参见所选的自变量和虚拟变量

这是shinyapps.io中应用程序的链接

代码如下

ui.R
library(shiny)
library(shinydashboard)
library(dygraphs)
dashboardPage(
  dashboardHeader(title="Dashboard"),
  dashboardSidebar(
    sidebarMenu(
      menuItem("Dashboard",tabName="dashboard",icon=icon("dashboard"))
    )
  ),
  dashboardBody(
    tabItems(
      tabItem(tabName = "dashboard",
              fluidRow(
                column(12,
                       box(title = "Plot Dependant", status = "primary", solidHeader = TRUE,
                           collapsible = TRUE,
                           dygraphOutput("final_plot",width = "100%", height = "300px"),width=8),
                       box(title="Model Specifications",status="warning",solidHeader= TRUE,
                           collapsible= TRUE,
                           uiOutput("mg"),width=4
                       )),
                column(12,
                       tabBox(title="Independants and Dummies",
                              tabPanel("Independants",verbatimTextOutput("modelvars")),
                              tabPanel("Dummies",verbatimTextOutput("modeldummies")),width=8
                       ),
                       box(title = "Inputs", status = "warning", solidHeader = TRUE,
                           collapsible = TRUE,
                           uiOutput("dependant"),
                           uiOutput("independant"),
                           uiOutput("dummies"),
                           sliderInput("spikes","Magnitude of strictness of crtiteria for spike",min=1,max=5,value=3,step=1),
                           sliderInput("dips","Magnitude of strictness of crtiteria for dips",min=1,max=5,value=3,step=1),width=4)

                ))

      )

    )
  ))


server.R

library(shiny)
library(stats)
library(dplyr)
library(dygraphs)

##
library(shinydashboard)
function(input, output) {

  raw_init<-data.frame(wek_end_fri=c("06Jul2012","13Jul2012","20Jul2012","27Jul2012","03Aug2012","06Jul2012","13Jul2012","20Jul2012","27Jul2012","03Aug2012"),
             Var1=c(468.9,507.1,447.1,477.1,452.6,883113.7,814778.0,780691.2,793416.6,833959.6),
             Var2=c(538672.6,628451.4,628451.4,628451.4,359115.8,54508.8,56036.1,57481.0,58510.0,59016.7),       
             MG= c("Cat1","Cat1","Cat1","Cat1","Cat1","Cat1","Cat1","Cat1","Cat1","Cat1","Cat2","Cat2","Cat2","Cat2","Cat2","Cat2","Cat2","Cat2","Cat2","Cat2")
             )


  #Select Category
  output$mg<-renderUI({
    selectInput("Category","Select Category",c("Cat1","Cat2"))
  })
  raw_init_filter<-reactive({
    filter(raw_init,MG == input$Category)
  })

  #Interpret Date
  raw_init_date<-reactive({
    mutate(raw_init_filter(),wek_end_fri=as.Date(wek_end_fri,"%d%b%Y"))
  })

  #Get variable Names
  Variable_list<-reactive({
    colnames(raw_init_date())
  })
  #Get potential dummy list
  Dummy_List<-reactive({
    raw_init_date()$wek_end_fri
  })
  #Load dependant
  output$dependant<-renderUI({
    selectInput("deplist","Select Dependant Variable",Variable_list(),selected="Var1")
  })
  #load independant
  output$independant<-renderUI({
    selectInput("indeplist","Select Independant Variable",Variable_list(),multiple=TRUE)
  })
  #Sepereate out Dependant
  dep<-reactive({
    raw_init_date()[input$deplist]
  })

  #Spike detection
  plot_data<-reactive({
    data.frame(Time=raw_init_date()$wek_end_fri,dep())
  })
  plot_data_mut<-reactive({
    f <- plot_data()
    colnames(f)[colnames(f)==input$deplist] <- "Volume"
    f
  })
  dep_vec<-reactive({
    as.vector(plot_data_mut()$Volume)
  })
  #Calculating mean
  dep_mean<-reactive({
    mean(dep_vec())
  })
  dep_sd<-reactive({
    sd(dep_vec())
  })
  transformed_column<-reactive({
    (dep_vec()-dep_mean())/dep_sd()
  })
  detected_index_spike<-reactive({
    which(transformed_column()>input$spikes/2)
  })
  detected_index_trough<-reactive({
    which(transformed_column()<(input$dips/(-2)))
  })
  detected_index<-reactive({
    c(detected_index_spike(),detected_index_trough())
  })
  detected_dates<-reactive({
    raw_init_date()$wek_end_fri[detected_index()]
  })

  output$dummies<-renderUI({
    validate(
      need(raw_init, 'Upload Data to see controls and results')
    )
    selectInput("dummies","Suggested Dummy Variable",as.character(Dummy_List()),selected=as.character(detected_dates()),multiple=TRUE)
  })
  indlist<-reactive({
    data.frame(Independant_Variables=input$indeplist)
  })
  output$modelvars<-renderPrint({
    indlist()
  })
  dumlist<-reactive({
    data.frame(Dummies=paste("Dummy_",as.character(format(as.Date(input$dummies,"%Y-%b-%d"),"%d%b%y")),sep=""))
  })
  output$modeldummies<-renderPrint({
    dumlist()
  })



  #-----------------------------------------------------------------------------------------#
  library(xts)
  plot_data_xts<-reactive({
    xts(dep(),order.by=as.Date(raw_init_filter()$wek_end_fri,"%d%b%Y"))
  })

  ##
  getDates <- reactive({
    as.character(input$dummies)
  })
  addEvent <- function(x,y) {
    dyEvent(
      dygraph=x,
      date=y,
      "", 
      labelLoc = "bottom",
      color = "red", 
      strokePattern = "dashed")
  }
  basePlot <- reactive({ 
    if (length(getDates()) < 1) {
      dygraph(
        plot_data_xts(),
        main="Initial Visualization and dummy detection") %>%
        dyAxis(
          "y", 
          label = "Volume") %>%
        dyOptions(
          axisLabelColor = "Black",
          digitsAfterDecimal = 2,
          drawGrid = FALSE)
    } else {
      dygraph(
        plot_data_xts(),
        main="Initial Visualization and dummy detection") %>%
        dyAxis(
          "y", 
          label = "Volume") %>%
        dyOptions(
          axisLabelColor = "Black",
          digitsAfterDecimal = 2,
          drawGrid = FALSE) %>%
        dyEvent(
          dygraph=.,
          date=getDates()[1],
          "", 
          labelLoc = "bottom",
          color = "red", 
          strokePattern = "dashed")
    }
  })
  ##

  output$final_plot <- renderDygraph({

    res <- basePlot()
    more_dates <- getDates()
    if (length(more_dates) < 2) {
      res
    } else {
      Reduce(function(i,z){
        i %>% addEvent(x=.,y=z)
      }, more_dates[-1], init=res)
    }

  })






}
ui.R
图书馆(闪亮)
图书馆(shinydashboard)
图书馆(动态图)
仪表板页面(
仪表板标题(title=“Dashboard”),
仪表板侧栏(
侧边栏菜单(
菜单项(“仪表板”,tabName=“仪表板”,icon=图标(“仪表板”))
)
),
仪表板主体(
tabItems(
tabItem(tabName=“仪表板”,
fluidRow(
第(12)栏,
框(title=“依赖打印”,status=“primary”,solidHeader=TRUE,
可折叠=真,
动态图形输出(“最终图形”,宽度=“100%”,高度=“300px”),宽度=8),
框(title=“型号规格”,status=“警告”,solidHeader=TRUE,
可折叠=真,
Ui输出(“mg”),宽度=4
)),
第(12)栏,
tabBox(title=“独立人士和傻瓜”,
tabPanel(“独立”,逐字逐句输出(“modelvars”),
选项卡面板(“假人”,逐字输出(“模型假人”),宽度=8
),
框(title=“Inputs”,status=“warning”,solidHeader=TRUE,
可折叠=真,
输出(“受抚养人”),
uiOutput(“独立”),
uiOutput(“假人”),
sliderInput(“尖峰”,“尖峰的临界值的严格程度”,最小值=1,最大值=5,值=3,步长=1),
滑块输入(“下倾”,“下倾的临界值大小”,最小值=1,最大值=5,值=3,步长=1),宽度=4)
))
)
)
))
服务器.R
图书馆(闪亮)
图书馆(统计)
图书馆(dplyr)
图书馆(动态图)
##
图书馆(shinydashboard)
功能(输入、输出){
raw_init您的应用程序在“依赖打印”框中显示以下错误消息:

错误:无法计算1次观察的周期

我已经加载了你的脚本并在本地运行了应用程序:我能够复制它并获得相同的错误消息

这是由于as.Date转换:%b未转换,导致xts和动态图包中出现NA。 这是由于区域设置(请参阅和)

通过使用更常见的日期规范,例如“%d/%m/%Y”,可以很容易地解决此问题:


谢谢。这正是我想要的。
  raw_init<-data.frame(wek_end_fri=c("06/07/2012","13/07/2012","20/07/2012","27/07/2012","03/08/2012","06/07/2012","13/07/2012","20/07/2012","27/07/2012","03/08/2012"),
 #Interpret Date
  raw_init_date<-reactive({
    mutate(raw_init_filter(),wek_end_fri=as.Date(wek_end_fri,"%d/%m/%Y"))
  })
  dumlist<-reactive({
    data.frame(Dummies=paste("Dummy_",as.character(format(as.Date(input$dummies,"%d/%m/%Y"),"%d/%m/%Y")),sep=""))
  })
  output$modeldummies<-renderPrint({
    dumlist()
  })

#-----------------------------------------------------------------------------------------#

  library(xts)
  plot_data_xts<-reactive({
    xts(dep(),order.by=as.Date(raw_init_filter()$wek_end_fri,"%d/%m/%Y"))
  })