Оператор if в R использует только первое условие для всех операторов.Зачем? - PullRequest
0 голосов
/ 25 июня 2019

Следующая функция, которая использует для подсчета времени в некоторых диапазонах, использует только одно условие для всех операторов.Зачем?

Я пытался использовать функцию «any» для векторизации этих операторов, но она все еще не работаетtrue_time во фрейме данных, но это верно только для одного условия в этой функции.Второе условие - это подсчет, основанный на другом утверждении

1 Ответ

0 голосов
/ 25 июня 2019

Я пытаюсь сделать это таким образом, но результат все еще неправильный .. Как я могу сделать это в данном конкретном случае?

function_SLA <- Vectorize(function(date1,date2){

library(lubridate)


dni_wolne <- c("2018-01-01","2018-01-06","2018-04-01","2018-04-02",
              "2018-05-01","2018-05-03","2018-05-20","2018-05-30",
              "2018-08-15","2018-11-01","2018-11-11","2018-11-12",
              "2018-12-25","2018-12-26","2019-01-01","2019-01-06",
              "2019-04-21","2019-04-22","2019-05-01","2019-05-03",
              "2019-06-09","2019-06-20","2019-08-15","2019-11-01",
              "2019-11-11","2019-12-25","2019-12-26")


sapply(data$Mid.Category, function(x)


if(x %in% c("B06","B12","BN0","BN1")){


dates <- seq(from=date1,to=date2,"mins")
dates <- dates[which(weekdays(dates) %in% c("poniedziałek","wtorek",
"środa","czwartek","piątek","sobota")

                  & hour(dates) >= 8 & hour(dates) <22
                  & !(as.character(dates,format="%Y-%m-%d") %in% dni_wolne))]

dates <- length(dates)/60

return(dates)


} else if(x %in% c("A06","A12","AN0")){

dates <- seq(from=date1, to=date2, "mins")

dates <- dates[which(hour(dates) >= 8 & hour(dates) < 22)]

dates <- length(dates)/60

return(dates)

}



)


}


)

...