【问题标题】: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)"))))