首页 > 解决方案 > as.Date() 没有提及“起源”

问题描述

我刚开始用 R 编码,目的是避免 if-else 语句。我试图找到闰年并编写以下代码:

 leap <- function(year) {
 as.Date(year)
 return(
   gettextf("Year %Y is a leap year", ifelse(leap.year(year),year, "Year %Y is not a leap year"))
 )
}
leap(2019)

我明确想省略起源,因为我想在日历中找到任何闰年。

另外,请告知这是否有效。

标签: rdate

解决方案


如果您不想指定来源,则需要传递as.Date一个字符串。您的代码还有更多问题。这有效:

library(lubridate)
leap <- function(year) {
  #don't forget to assign like this: 
  year <- year(as.Date(paste0(year, "-01-01"))) 
  
  #you need to nest your functions correctly:
  sprintf(ifelse(leap_year(year), 
                  "Year %d is a leap year", 
                  "Year %d is not a leap year"), 
           year)
 }

leap(c(2000:2020))
#[1] "Year 2000 is a leap year"     "Year 2001 is not a leap year" "Year 2002 is not a leap year"
 #[4] "Year 2003 is not a leap year" "Year 2004 is a leap year"     "Year 2005 is not a leap year"
#...

推荐阅读