corrigated=FALSE option added to musoDate function

This commit is contained in:
hollorol 2017-02-13 12:22:59 +01:00
parent 1d0bc28565
commit 71e488dc42

View File

@ -9,46 +9,59 @@ isLeapyear <- function(year){
} }
} }
dayOfMonths <- function(year){ dayOfMonths <- function(year,corrigated=TRUE){
##This function tells us how many days are in the months in the choosen year. ##This function tells us how many days are in the months in the choosen year.
dayMonths <- c(31,28,31,30,31,30,31,31,30,31,30,31) dayMonths <- c(31,28,31,30,31,30,31,31,30,31,30,31)
if(isLeapyear(year)==TRUE){ if(corrigated){
dayMonths[2] <-29
if(isLeapyear(year)==TRUE){
dayMonths[2] <-29
}
} }
return(dayMonths) return(dayMonths)
} }
dayOfYears <- function(year){ dayOfYears <- function(year, corrigated=TRUE){
##This function tells us how many days are in the given year. ##This function tells us how many days are in the given year.
if(isLeapyear(year)==TRUE){ if(corrigated){
return(366) if(isLeapyear(year)==TRUE){
return(366)
} else {
return(365)
}
} else { } else {
return(365) return(365)
} }
} }
sumDaysOfPeriod <- function(year, periodlen){ sumDaysOfPeriod <- function(year, periodlen, corrigated=TRUE){
##How many days are from the given date and given period length(periodlen)? ##How many days are from the given date and given period length(periodlen)?
years <- year:(year+periodlen) years <- year:(year+periodlen)
if(corrigated){
years100 <-length(which(years%%100==0)) years100 <-length(which(years%%100==0))
years400 <-length(which(years%%400==0)) years400 <-length(which(years%%400==0))
years4 <- length(which(years%%4==0)) years4 <- length(which(years%%4==0))
numberOfLeapdays <- years4-years100+years400 numberOfLeapdays <- years4-years100+years400
days <- periodlen*365+numberOfLeapdays days <- periodlen*365+numberOfLeapdays
return(days) return(days)
} else {
days <- periodlen*365
}
} }
musoDate <- function(settings,timestep="d",combined=TRUE, corrigate=TRUE){ musoDate <- function(settings,timestep="d",combined=TRUE, corrigated=TRUE){
##calculates a ##calculates a
days <- sumDaysOfPeriod(settings$startyear,settings$numyears)
days <- sumDaysOfPeriod(settings$startyear,settings$numyears, corrigated=corrigated)
dates <- matrix(rep(NA,days*3),ncol=3) dates <- matrix(rep(NA,days*3),ncol=3)
dates[1,] <- c(settings$startyear,1,1) dates[1,] <- c(settings$startyear,1,1)
@ -57,7 +70,7 @@ musoDate <- function(settings,timestep="d",combined=TRUE, corrigate=TRUE){
if((dates[i-1,2]==12)&(dates[i-1,3]==31)){ if((dates[i-1,2]==12)&(dates[i-1,3]==31)){
dates[i,] <-c((dates[(i-1),1]+1),1,1) dates[i,] <-c((dates[(i-1),1]+1),1,1)
} else { } else {
if(dates[i-1,3]==(dayOfMonths(dates[(i-1),1])[dates[(i-1),2]] )){ if(dates[i-1,3]==(dayOfMonths(dates[(i-1),1],corrigated=corrigated)[dates[(i-1),2]] )){
dates[i,]<-c(dates[(i-1),1],(dates[(i-1),2]+1),1) dates[i,]<-c(dates[(i-1),1],(dates[(i-1),2]+1),1)
} else { } else {
dates[i,3]<-dates[(i-1),3]+1 dates[i,3]<-dates[(i-1),3]+1
@ -66,17 +79,7 @@ musoDate <- function(settings,timestep="d",combined=TRUE, corrigate=TRUE){
} }
if(corrigate==TRUE){
if(combined==TRUE){
dates <- apply(dates,1,function(x) paste(x,collapse="."))[1:(settings$numyears*365)]
return(dates)
}
dates<-dates[(1:(settings$numyears*365)),]
} else {
}
if(combined==TRUE){ if(combined==TRUE){
dates <- apply(dates,1,function(x) paste(x,collapse=".")) dates <- apply(dates,1,function(x) paste(x,collapse="."))