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

时间:2017-03-08 14:12:16

标签: r zoo

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

它使用来自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.monarmon提供的月份的最后一天开始,格式为“mmYYYY”并测试bizday。保持一次减少一天,直到is.bizday返回TRUE所以条件!is.bizday变为FALSE并且中断。 (应该)

我得到“条件在while循环中长度大于1”并且不知道问题在哪里。

提前致谢

1 个答案:

答案 0 :(得分:1)

我认为你正在尝试使用带有日期向量的函数,但是没有办法在while循环中使用多个值来评估逻辑运算符。我建议你改用sapply()

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

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