【问题标题】:R Encoding Holiday Vectors optionally using timeDate packageR 可选地使用 timeDate 包对假日向量进行编码
【发布时间】:2019-06-02 14:31:48
【问题描述】:

R 中的 timeDate 包提供了我想包含在时间序列数据集中的假期列表。如果我调用timeDate::listHolidays("US"),我会得到一个与 timeDate 包中的函数名称相对应的美国假日名称向量。我想以编程方式循环浏览这些假期列表并获取给定年份(或年份)的日期值。

有点像

hdates <- list()
i <- 1
for (h in timeDate::listHolidays('US')) {
    hdates[[i]] <- h(2018)
    i <- i + 1
}

这当然行不通,因为h 是字符串/字符而不是函数。有没有办法以编程方式从命名空间中获取命名函数?我也对提取多个假期日期的其他方法持开放态度。

【问题讨论】:

    标签: r date time-series forecasting arima


    【解决方案1】:

    使用eval(parse(text=)) ...

    library(timeDate)
    hdates <- list()
    i <- 1
    for (h in listHolidays('US')) {
        hdates[[i]] <- eval(parse(text=paste0(h, "(2018)")))
        i <- i + 1
    }
    

    或者更简洁的方法...

    lapply(listHolidays('US'), function(x) eval(parse(text=paste0(x, "(2018)"))))
    

    或者如果你想获取命名列表元素...

    sapply(listHolidays('US'), function(x) eval(parse(text=paste0(x, "(2018)"))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      相关资源
      最近更新 更多