Високосный год в R некоторые выводы ошибочны - PullRequest
0 голосов
/ 28 января 2020

Узнайте високосный год в R

year <- 1990
if((year %% 4) == 0){
  if((year %% 100) == 0){
   if((year %% 400) == 0){
   print(paste(year,"is a leap year"))
}
 else{
  print(paste(year,"is a leap year"))
 }
}
 else{
   print(paste(year,"is not a leap year"))
 }
}

Код подходит для 2020 или 2000 года. Но я не получил вывод для 1990 года.

Может кто-нибудь сказать мне, что это проблема с этим кодом?

1 Ответ

2 голосов
/ 28 января 2020

Я думаю, что логика c была немного неправильной в вашей попытке. Также вам понадобился еще else в конце для первого if.

year <- 1990

if((year %% 4) == 0) {
  if((year %% 100) == 0) {
    if((year %% 400) == 0) {
      print(paste(year,"is a leap year"))
    } else {
      print(paste(year,"is not a leap year"))
    }
  } else {
     print(paste(year,"is a leap year"))
  }
} else {
  print(paste(year,"is not a leap year"))
}

Вы также можете рассмотреть возможность использования функции leap_year из lubridate, которая делает это «из коробки».

lubridate::leap_year(1990)
#[1] FALSE
lubridate::leap_year(2000)
#[1] TRUE

В частности, leap_year в функции задается как (year%%4 == 0) & ((year%%100 != 0) | (year%%400 == 0))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...