Это нетривиально и, вероятно, заслуживает упоминания сопровождающего 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
в chron
namespace :
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)