我想使用library(timeDate)
提取一些假期。我首先使用了以下语法:
EasterSunday<- as.Date(EasterSunday(2015:2018))
EasterSunday
# [1] "2015-04-05" "2016-03-27" "2017-04-16" "2018-04-01"
然后我想添加相应的假日日期序列:
EasterSunday<- cbind.data.frame(hd=rep('EasterSunday',length(as.Date(EasterSunday(2015:2018)))),date=as.Date(EasterSunday(2015:2018)))
EasterSunday
#hd #date
#1 EasterSunday 2015-04-05
#2 EasterSunday 2016-03-27
#3 EasterSunday 2017-04-16
#4 EasterSunday 2018-04-01
然后我想在那个包中循环所有假期:
holidays=c("GoodFriday","EasterSunday","EasterMonday")
# Here I could not find the appropriate function
do.call(cbind, lapply(holidays, function(x) EasterSunday((2015:2018))))
#[,1] [,2] [,3]
#[1,] ? ? ?
答案 0 :(得分:5)
使用match.fun
:
library(timeDate)
holidays <- c("GoodFriday", "EasterSunday", "EasterMonday")
do.call(rbind,
lapply(holidays, function(i){
foo <- match.fun(i)
data.frame(Holiday = i,
Dates = as.Date(foo(2015:2018)))
}))
# Holiday Dates
# 1 GoodFriday 2015-04-03
# 2 GoodFriday 2016-03-25
# 3 GoodFriday 2017-04-14
# 4 GoodFriday 2018-03-30
# 5 EasterSunday 2015-04-05
# 6 EasterSunday 2016-03-27
# 7 EasterSunday 2017-04-16
# 8 EasterSunday 2018-04-01
# 9 EasterMonday 2015-04-06
# 10 EasterMonday 2016-03-28
# 11 EasterMonday 2017-04-17
# 12 EasterMonday 2018-04-02