Ваш код выглядит нормально, если не считать одиночных скобок в конце (ошибка копирования-вставки?). Вы получаете ошибку, потому что у вас, вероятно, есть пропущенные данные во входных данных;это выдает то же сообщение об ошибке
sapply(weekdays(c(Sys.time(), NA), abbreviate=TRUE), function(x)
if(x=="Sun") 1 else
if(x=="Mon") 2 else
if(x=="Tue") 3 else
if(x=="Wed") 4 else
if(x=="Thu") 5 else
if(x=="Fri") 6 else
if(x=="Sat") 7 else 0)
Функция дня недели выдает ошибку, если на входе есть что-то неправильное (NA или что-то, что не соответствует дате).Вам было бы лучше с функцией lubridate::wday()
, которая уже обрабатывает числовые названия дней:
library(lubridate)
wday(as.Date(date))
#### [1] 6 NA
Затем вы можете заменить NA на все, что захотите.