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