我正在编写一个函数,以便它返回给定月份和年份的月份的最后一个工作日。
它使用bizdays包中的is.bizday。如果给定日期是工作日,则is.bizday返回TRUE,否则返回FALSE。
我的函数:
library(bizdays)
UltDiaLabor <- function(mesanio) {
ult<-as.Date(as.yearmon(mesanio, "%m%Y"), frac = 1)
while(!is.bizday(ult)) {
ult=ult-1
}
return(ult)
}它从as.yearmon提供的格式为"mmYYYY“的每月的最后一天开始,并测试bizday。一天一次进行减法运算,直到is.bizday返回TRUE,所以条件!is.bizday会返回FALSE并中断。(应该)
我得到“while循环中条件的长度大于1”,但不知道问题出在哪里。
提前感谢
发布于 2017-03-08 22:37:42
我认为您正在尝试将该函数与日期向量一起使用,但是无法使用一个以上的值来计算while循环中的逻辑运算符。我建议您改用sapply()。
date <- "122001"
dates <- c("122001", "091999")
UltDiaLabor(date) # works
UltDiaLabor(dates) # does not work
sapply(dates, UltDiaLabor) # workshttps://stackoverflow.com/questions/42673606
复制相似问题