Предположим, что дата задана как три целых числа: год, месяц, день
Год - это целое число 4 di git (например, 2020), месяц находится в диапазоне от 1 до 12, день превышает 1 -31.
Я ищу простую функцию (назовите ее checkdate), которая может проверять, действительна ли дата, возвращая ИСТИНА, если действительна, и ЛОЖЬ, если недействительна.
Например, checkdate (2008, 2, 29) вернет ИСТИНА, потому что 2008 год был високосным.
С другой стороны, checkdate (2009, 2, 29) вернет ЛОЖЬ, потому что 2009 год не был високосным.
checkdate (2009, 6, 31) вернет FALSE, потому что в июне всего 30 дней.
Et c.
UPDATE
На основе Ответ Дирка, ниже, вот функция, которая выполняет то, что я просил:
checkdate = function(y, m, d) {
#y: A year, not abbreviated to 2 digits.
#m: An integer in the range 1-12.
#d: An integer in the range 1-31.
#Convert to an R Date object.
#If the date is not valid, NA is returned.
dt = as.Date(paste(y, m, d, sep='-'), optional=TRUE)
ifelse(is.na(dt), FALSE, TRUE)
}