2

R基本实践中的问题,

  1. 创建一个变量 L,并将年份 (2018) 的值分配给它。

  2. 创建另一个变量 NL,使用变量 L 分配下一个闰年的值,然后打印 NL。”

我已经尝试如下,但没有得到想要的输出,请帮助我

L <- as.Date("2018")
NL <- L + timedelta(year=4)
print(NL)
4

3 回答 3

2

这可能会有所帮助:

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)]
}
于 2020-05-26T09:12:58.417 回答
0

您可以针对各种年份值尝试此函数,这些值非常适合测试该函数:

+------+----------------+
| 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

于 2020-11-25T11:32:02.150 回答
0

这很简单。

定义一个 (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
于 2020-10-15T20:52:32.623 回答