Question dans R
base pratique,
Créez une variable L et attribuez-lui la valeur de l'année (2018).
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)
3 Réponses :
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
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
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 | +------|----------------+
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