реализация аргумента ignore_year в функции - PullRequest
1 голос
/ 22 января 2020

У меня есть функция с именем date_has_passed, в которой в качестве двух аргументов она принимает значение типа Date и логическое значение. Основываясь на указанной дате, он рассчитывает разницу между этой датой и сегодняшней датой, чтобы определить, произошла ли эта дата уже в этом году.

#7.
date_has_passed <- function(date, ignore_year) {
  today <- Sys.Date()
  difference <- today - date

  if (difference < 0) {
    true_or_false <- FALSE
  } else if (difference > 0) {
    true_or_false <- TRUE
  } else {
    true_or_false <- "It is the same day as the given date"
  }
  true_or_false
}
#8.
date_has_passed(as.Date("2020-01-23"), TRUE) #date has not occurred test case
date_has_passed(as.Date("2021-01-19"), TRUE) #ignore_year test case

Сейчас я хочу добавить аргумент ignore_year, где, если аргументу передано логическое значение TRUE, функция вернет, прошла ли дата в этом году, независимо от года, переданного для дата аргумента

EX: если дата аргумента - "2021-01-19", а переданное логическое значение - ИСТИНА, то функция должна вернуть ИСТИНА, если дата прошла, несмотря на то, что она является год от текущей даты.

1 Ответ

0 голосов
/ 22 января 2020

Мы можем сравнить количество дней в году, если ignore_year = TRUE

date_has_passed <- function(date, ignore_year = FALSE) {
  if(ignore_year)
    as.integer(format(date, "%j")) < as.integer(format(Sys.Date(), "%j"))
  else date < Sys.Date()
}

date_has_passed(as.Date("2020-01-23"))
#[1] FALSE
date_has_passed(as.Date("2020-01-15"))
#[1] TRUE
date_has_passed(as.Date("2021-01-15"), TRUE)
#[1] TRUE
...