while 循环中条件的长度大于 1

Condition has length greater than 1 in while loop

我正在编写一个函数,因此它 returns 给定月份和年份的月份的最后一个工作日。

它使用 bizdays 包中的 is.bizday。 is.bizday returns 如果给定日期是工作日,则为 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 returns TRUE 所以条件 !is.bizday 变为 FALSE 并中断。 (应该)

我得到 "Condition has length greater than 1 in while loop" 但不知道问题出在哪里。

提前致谢

我认为您正在尝试将函数与日期向量一起使用,但无法在 while 循环中使用多个值计算逻辑运算符。我建议您改为使用 sapply().

date <- "122001"
dates <- c("122001", "091999")

UltDiaLabor(date) # works
UltDiaLabor(dates) # does not work
sapply(dates, UltDiaLabor) # works