R中的timeDate
包提供了我想在时间序列数据集中包含的假期列表。如果我调用timeDate::listHolidays("US")
,我会得到一个美国假期名称的向量,该向量与timeDate包中的函数名称相对应。我想以编程方式遍历这些假期列表,并获取给定年份(或几年)的日期值。
类似
hdates <- list()
i <- 1
for (h in timeDate::listHolidays('US')) {
hdates[[i]] <- h(2018)
i <- i + 1
}
这当然不起作用,因为h
是字符串/字符而不是函数。有什么方法可以通过编程方式从命名空间中获取命名函数?我也愿意采用其他方法提取多个假期的日期。
答案 0 :(得分: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)"))))