1
votes

Pour imprimer la valeur de l'année bissextile suivante en utilisant la variable dans la programmation R

Question dans R base pratique,

  1. Créez une variable L et attribuez-lui la valeur de l'année (2018).

  2. Créez une autre variable NL, attribuez la valeur de l'année bissextile suivante à l'aide de la variable L, puis imprimez NL. "

J'ai essayé comme ci-dessous, mais je n'obtiens pas le résultat souhaité, aidez-moi s'il vous plaît

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


2 commentaires

2018 n'est pas une date, c'est juste un chiffre. Avez-vous besoin d'utiliser timedelta? Cela semble aussi simple que: L <- 2018; NL <- L + 4; print(NL)


Salut Gopal, avez-vous vérifié la réponse ci-dessous? Si la réponse ci-dessous a fonctionné pour vous, veuillez envisager d'accepter la réponse en cliquant sur la coche à côté du bouton de vote. Lisez stackoverflow.com/help/someone-answers


3 Réponses :


1
votes

Cela pourrait aider:

get_next_leap_year <- function(L) {
   all_years <- L + 1:4
   all_years[lubridate::leap_year(all_years)]
}

Si vous êtes autorisé à utiliser un package, vous pouvez utiliser leap_year de lubridate .

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


0 commentaires

0
votes

C'est simple.

Définissez une (l) var:

l<- 2018
nl<l+2
nl

Définissez une fonction avec l'intervalle et les multiples des années bissextiles:

nl <- ny(l)

Définissez une var appelée nl avec la fonction (l):

ny <- function (l){
x <- l + 1:4
x[(x %% 4 == 0 & x %%100 != 0) | x %% 400 == 0] return(x)}

Mais si vous faites cela pour FrescoPlay, ils veulent juste:

C'est simple.

Définissez une L var:

l <- 2018

Définissez une fonction avec l'intervalle et les multiples des années bissextiles:

nl <- ny(l)

Définissez une var appelée ND avec la fonction (L):

ny <- function (l){
x <- l + 1:4
x[(x %% 4 == 0 & x %%100 != 0) | x %% 400 == 0] return(x)}

Mais, si vous faites cela pour FrescoPlay, ils veulent juste:

l <- 2018


0 commentaires

0
votes

Vous pouvez essayer cette fonction pour différentes valeurs d'année qui sont parfaites pour tester la fonction:

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

+------+----------------+
| Year | Next Leap Year |
+------+----------------+
| 1995 |     1996       |
| 1996 |     2004       |
| 1997 |     2004       |
+------|----------------+


0 commentaires