【问题标题】:Using dates from an input file as min and max for slider input in shiny使用输入文件中的日期作为闪亮的滑块输入的最小值和最大值
【发布时间】:2018-03-16 04:19:18
【问题描述】:

我有一个闪亮的应用程序,我可以在其中加载文件。我不想从我的文件中提取最小和最大日期范围,将它们用作滑块输入的输入。

这是我目前所拥有的

ui <- fluidPage(
dateRangeInput(inputId = "date", label = "Input a date range", start=textOutput("datemin") , end = textOutput("datemax"),"%d-%m-%y"))
)
server = function(input, output){
output$datemin <- renderText({as.character(as.Date(paste("01",as.character.Date(min(dataset()$date)),sep="-"),"%d-%y-%m"))})
     output$datemax <- renderText({as.character(as.Date(paste("01",as.character.Date(max(dataset()$date)),sep="-"),"%d-%y-%m"))})
}

我知道输出 datemin 和 datemax 有点棘手,这是因为数据集中的“日期”列是一个字符串,例如 2013 年 5 月的“13-05”(数据集是一个汇总版本,每月表示一些值)

编辑。

我为我的日期尝试了 3 种不同的输出以检查格式,并将它们显示为文本输出,如下所示:

用户界面

    textOutput("datemin1"),
    textOutput("datemin2"),
    textOutput("datemin3"),

服务器

 output$datemin1 <- renderText({(as.character.Date(min(dataset()$date)))})
 output$datemin2 <- renderText({as.character(as.Date(paste("01",as.character.Date(min(dataset()$datem)),sep="-"),"%d-%y-%m"))})
 output$datemin3 <- reactive({as.Date(as.yearmon(min(dataset()$datem)))})

输出如下:

datemin1 : 14-01
datemin2 : 2014-01-01
datemin3 : 0014-01-01

但是当我尝试使用输出作为滑块的输入值时,如下所示:

    sliderInput("slider1", "Date Range",
                min = textOutput("datemin2"), max=textOutput("datemax2"),
                value = textOutput("datemax2")
    ),

我收到此错误: 错误:二元运算符的非数字参数

谢谢

【问题讨论】:

  • 您想如何在sliderInput 上显示日期格式?您的数据集中的完整日期格式是什么?
  • 原来数据集中完整的日期格式是yyyy-mm-dd,但是当汇总数据集计算数据的月均值时,将其删除为yy-mm。在 sliderInput 上,格式可以是 mm-yyyy 或 dd-mm-yyyy,day 自动初始化为 01。
  • 好的,请看下面的答案。

标签: r date shiny slider


【解决方案1】:

library(zoo) 包括yearmon,这是一个表示月度数据的类。请看下面的代码,它将13-05 转换为13-05-01

library(shiny)
library(zoo)

dataset <- data.frame(minDate = c('13-05'), maxDate = c('14-05'))

if(interactive()){
  shinyApp(
    ui <- fluidPage(
      sliderInput("slider1", "Date Range",
                  min = as.Date(as.yearmon(dataset$minDate)),
                  max = as.Date(as.yearmon(dataset$maxDate)),
                  value = as.Date(as.yearmon(dataset$minDate))
                  )
      ),

    server = function(input, output){

      }
  )
}

【讨论】:

  • 谢谢。此解决方案工作正常,但当日期不是来自您的示例中的独立数据集时仍然无法工作。我对我的问题进行了编辑。
猜你喜欢
  • 2016-11-25
  • 1970-01-01
  • 2021-08-10
  • 2013-11-15
  • 1970-01-01
  • 2020-07-20
  • 2021-04-26
  • 1970-01-01
  • 2021-01-02
相关资源
最近更新 更多