R基本实践中的问题,
创建一个变量 L,并将年份 (2018) 的值分配给它。
创建另一个变量 NL,使用变量 L 分配下一个闰年的值,然后打印 NL。”
我已经尝试如下,但没有得到想要的输出,请帮助我
L <- as.Date("2018")
NL <- L + timedelta(year=4)
print(NL)
这可能会有所帮助:
get_next_leap_year <- function(L) {
all_years <- L + 1:4
all_years[(all_years %% 4 == 0 & all_years %%100 != 0) | all_years %% 400 == 0]
}
get_next_leap_year(2018)
#[1] 2020
如果您被允许使用一个包,您可以使用leap_yearfrom lubridate。
get_next_leap_year <- function(L) {
all_years <- L + 1:4
all_years[lubridate::leap_year(all_years)]
}
您可以针对各种年份值尝试此函数,这些值非常适合测试该函数:
+------+----------------+
| Year | Next Leap Year |
+------+----------------+
| 1995 | 1996 |
| 1996 | 2004 |
| 1997 | 2004 |
+------|----------------+
L <- as.Date("2005-01-01")
year <- as.numeric(substr(L, start = 1, stop = 4))
NL <- ifelse(test = year %% 400 != 0,
yes = ifelse(test = (year %% 4 == 0 | year %% 100 == 0),
yes = ifelse(test = (year + 4) %% 400 != 0,
yes = year + 4,
no = year + 8 + year %% 4),
no = ifelse(test = (year + 4 - year %% 4) %% 400 != 0,
yes = year + 4 - year %% 4,
no = year + 8 - year %% 4)),
no = year + 4)
NL
这很简单。
定义一个 (l) 变量:
l <- 2018
用闰年的间隔和倍数定义一个函数:
ny <- function (l){
x <- l + 1:4
x[(x %% 4 == 0 & x %%100 != 0) | x %% 400 == 0] return(x)}
用 (l) 的函数定义一个名为 nl 的 var:
nl <- ny(l)
但是,如果您是为 FrescoPlay 执行此操作,他们只想:
这很简单。
定义一个 L 变量:
l <- 2018
用闰年的间隔和倍数定义一个函数:
ny <- function (l){
x <- l + 1:4
x[(x %% 4 == 0 & x %%100 != 0) | x %% 400 == 0] return(x)}
定义一个名为 ND 的变量,函数为 (L):
nl <- ny(l)
但是,如果您为 FrescoPlay 执行此操作,他们只想:
l<- 2018
nl<l+2
nl