这一点很重要,可能值得参考chron
维护者将其视为错误。
library(chron)
library(timeDate)
hlist <- c("CAVictoriaDay","CACanadaDay","CALabourDay")
(ss <- dates(sapply(sapply(hlist,holiday,year=2011),as.Date)))
.Holidays <- ss
(实际上比我更频繁地在 R 中使用日期的人可能对前面的内容有更优雅的解决方案,而无需双重处理sapply
事物 ...)
但这并没有改变重要的事情,那就是版本Holidays
in the chron
名称空间:
chron::.Holidays ## no change
线索在这里:覆盖命名空间中导入的函数
命名空间魔法:
unlockBinding(".Holidays", as.environment("package:chron"))
assignInNamespace(".Holidays", .Holidays, ns="chron",
envir=as.environment("package:chron"))
assign(".Holidays", .Holidays, as.environment("package:chron"))
lockBinding(".Holidays", as.environment("package:chron"))
现在看看,它已经起作用了:
chron::.Holidays
测试一下:
yrvec <- seq.Date(as.Date("2011-01-01"),
as.Date("2011-12-31"),by="day")
plot(is.holiday(yrvec),axes=FALSE)
axis.Date(side=1,yrvec)