R闪亮代码——ggplot直方图的反应滑块

R闪亮代码——ggplot直方图的反应滑块,r,R,我试图用一个直方图来编程一个闪亮的仪表板,它允许您根据日期对输入数据进行子集 我有日期输入栏,但它只提供一个时间点的数据,而不是一个范围。有人能指出我在代码中哪里出错了吗 我将提供我的server.r和ui.r代码,以及可复制的数据 SERVER.R library(reshape) library(shiny) library(ggplot2) # GEN DATA ----------------------------------------------- dates = c("20

我试图用一个直方图来编程一个闪亮的仪表板,它允许您根据日期对输入数据进行子集

我有日期输入栏,但它只提供一个时间点的数据,而不是一个范围。有人能指出我在代码中哪里出错了吗

我将提供我的server.r和ui.r代码,以及可复制的数据

SERVER.R

library(reshape)
library(shiny)
library(ggplot2)


# GEN DATA -----------------------------------------------

dates = c("2014-01-01", "2014-02-01", "2014-03-01", "2014-04-01", "2014-01-    01", "2014-02-01", "2014-03-01", "2014-04-01", "2014-01-01", "2014-02-01")
value = c  ("3.2", "4.1", "3.8", "5.6", "2.1", "2.0", "1.0" , "4.5", "1.6", "2.9")
dataset = cbind(dates, value)
dataframe = data.frame(dataset)
dataframe$dates <- as.Date(dataframe$dates, format = "20%y-%m-%d")
dataframe$value <- as.numeric(dataframe$value)

# SERVER -----------------------------------------------
shinyServer(function (input, output) {


  # DATA

  data.r = reactive({
    a = subset(dataframe, dates %in% input$daterange)
return(a)
  })



  # GGPLOT

  mycolorgenerator = colorRampPalette(c('sienna','light grey')) 

  output$myplot = renderPlot({

    dd<-data.r()
    # ggplot with proper reference to reactive function <<data.r()>>
    s = ggplot(data=subset(dataframe, dates %in% input$daterange ), aes   (x=value))  + geom_histogram(data=subset(dd, dates%in% input$daterange ) , aes(x=value))

print(s)
  })
})
# INPUT PART

library(shiny)

shinyUI(pageWithSidebar(
  # Application title
  headerPanel("My App"),

  sidebarPanel( 

  dateRangeInput("daterange", "Date range:",
               start  = "2014-01-01",
               end    = "2014-03-31",
               min    = "2014-01-01",
               max    = "2014-03-31",
               format = "yyyy/mm/dd",
               separator = "-"),

    submitButton(text="Update!")
  ),
  # -----------------------------------------------

  # OUTPUT PART

   mainPanel(
   tabsetPanel(
   tabPanel("Tab 1", h4("Head 1"),plotOutput("myplot"))
    )
  )
))

您在这里进行的是字符串匹配,而不是日期间隔检查。对于您必须处理的内容,
daterange
需要包含与数据完全相同的值,并返回两个以上的日期,而UI控件不需要执行这些设置

我想这样的东西可能适合你

# inside interval
start <- ymd("2014-01-01") 
end <- ymd("2014-02-01")
my.interval <- interval(start, end)
ymd("2014-01-05") %within% my.interval
[1] TRUE

# outside interval
start <- ymd("2014-01-01") 
end <- ymd("2014-02-01")
my.interval <- interval(start, end)
ymd("2014-03-21") %within% my.interval
[1] FALSE
#间隔内

开始您在这里进行的是字符串匹配,而不是日期间隔检查。对于您必须处理的内容,
daterange
需要包含与数据完全相同的值,并返回两个以上的日期,而UI控件不需要执行这些设置

我想这样的东西可能适合你

# inside interval
start <- ymd("2014-01-01") 
end <- ymd("2014-02-01")
my.interval <- interval(start, end)
ymd("2014-01-05") %within% my.interval
[1] TRUE

# outside interval
start <- ymd("2014-01-01") 
end <- ymd("2014-02-01")
my.interval <- interval(start, end)
ymd("2014-03-21") %within% my.interval
[1] FALSE
#间隔内

开始按如下方式修改代码,您的子集设置不正确:

server <- shinyServer(function (input, output) {
  # DATA
  data.r = reactive({
    a = subset(dataframe, dates >= input$daterange[1] & 
                          dates <= input$daterange[2]) # add some validation code here 
                          # to validate that input$daterange[2] >= input$daterange[1]
    return(a)
  })
  # GGPLOT
  mycolorgenerator = colorRampPalette(c('sienna','light grey')) 
  output$myplot = renderPlot({
    dd<-data.r()
    # ggplot with proper reference to reactive function <<data.r()>>
    print(ggplot(dd, aes(x=value)) + geom_histogram())
  })
})

# INPUT PART
library(shiny)
ui <- shinyUI(pageWithSidebar(
  # Application title
  headerPanel("My App"),
  sidebarPanel( 
    dateRangeInput("daterange", "Date range:",
                   start  = "2014-01-01",
                   end    = "2014-03-31",
                   min    = "2014-01-01",
                   max    = "2014-03-31",
                   format = "yyyy/mm/dd",
                   separator = "-"),

    submitButton(text="Update!")
  ),
  # OUTPUT PART
  mainPanel(
    tabsetPanel(
      tabPanel("Tab 1", h4("Head 1"),plotOutput("myplot"))
    )
  )
))

shinyApp(ui = ui, server = server)
server=input$daterange[1]&
dates=输入$daterange[1]
报税表(a)
})
#GGPLOT
mycolorgenerator=colorRampPalette(c('sienna','浅灰色'))
输出$myplot=renderPlot({

dd按如下方式修改代码,您的子集设置不正确:

server <- shinyServer(function (input, output) {
  # DATA
  data.r = reactive({
    a = subset(dataframe, dates >= input$daterange[1] & 
                          dates <= input$daterange[2]) # add some validation code here 
                          # to validate that input$daterange[2] >= input$daterange[1]
    return(a)
  })
  # GGPLOT
  mycolorgenerator = colorRampPalette(c('sienna','light grey')) 
  output$myplot = renderPlot({
    dd<-data.r()
    # ggplot with proper reference to reactive function <<data.r()>>
    print(ggplot(dd, aes(x=value)) + geom_histogram())
  })
})

# INPUT PART
library(shiny)
ui <- shinyUI(pageWithSidebar(
  # Application title
  headerPanel("My App"),
  sidebarPanel( 
    dateRangeInput("daterange", "Date range:",
                   start  = "2014-01-01",
                   end    = "2014-03-31",
                   min    = "2014-01-01",
                   max    = "2014-03-31",
                   format = "yyyy/mm/dd",
                   separator = "-"),

    submitButton(text="Update!")
  ),
  # OUTPUT PART
  mainPanel(
    tabsetPanel(
      tabPanel("Tab 1", h4("Head 1"),plotOutput("myplot"))
    )
  )
))

shinyApp(ui = ui, server = server)
server=input$daterange[1]&
dates=输入$daterange[1]
报税表(a)
})
#GGPLOT
mycolorgenerator=colorRampPalette(c('sienna','浅灰色'))
输出$myplot=renderPlot({
dd