我正在尝试使用chron
的is.holiday()
函数,但无法使其正常工作。该文档说要使用您希望使用的假期修改 .Holiday
对象,但是 .Holiday
似乎没有检测到我对 is.holiday()
所做的更改。有人可以提供一个加载假期的适当方法的例子吗?
最佳答案
这很重要,可能值得将 chron
维护者称为错误。
library(chron)
library(timeDate)
hlist <- c("CAVictoriaDay","CACanadaDay","CALabourDay")
(ss <- dates(sapply(sapply(hlist,holiday,year=2011),as.Date)))
.Holidays <- ss
(实际上比我更经常使用R中的日期的人可能对前面的内容有一个更优雅的解决方案,而没有double-
sapply
的问题...)但这并没有改变重要的事情,即
Holidays
命名空间中 chron
的版本:chron::.Holidays ## no change
线索在这里:Override a function that is imported in a namespace
命名空间魔法:
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)
关于r - 如何在 R 中为 is.holiday() chron 包定义假期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7451354/