R weekdays(Sys.Date()) — Не удается выяснить, что вызывает такое поведение

#r #weekday

#r #день недели

Вопрос:

Я нахожусь в России, я отправляю отчеты по понедельникам с помощью планировщика Windows. ‘понедельник’ stands for Monday in Russian.

На самом деле я сталкиваюсь со странным поведением weekdays(Sys.Date()), которое отличается в зависимости от того, как я его вызываю. При вызове из RStudio IDE или из R console это if( утверждение возвращает TRUE сегодня (то есть в понедельник), как и ожидалось, но при вызове этого скрипта из командной строки или с помощью планировщика условие возвращает FALSE. Я действительно в замешательстве. Я не могу это отладить.

 week_day_send <- F

print(weekdays(Sys.Date()))

if(
     weekdays(Sys.Date()) == 'понедельник'
)
{

     week_day_send <- T

     message('sending weekly reports')

}
  

Мой язык:

 > Sys.getlocale("LC_TIME")
[1] "Russian_Russia.1251"
  

Комментарии:

1. Я предполагаю, что это может быть проблема кодирования. Однако не следует полагаться на weekdays , поскольку это зависит от локального. По крайней мере, не вводите значение жестко. Определите что-то вроде monday <- weekdays(someKnownMonday) , а затем сравните weekdays(Sys.Date()) с monday .

2. попробуйте использовать функцию wday из lubridate

3. Хорошо, Никола, спасибо. Я сделал это. понедельник <- weekdays(as.Date(«2019-03-04»)) работает как из IDE, так и из командной строки, так что, я думаю, это решено. Позже я тоже обновлю, большое спасибо! Ghh, такая глючная ошибка.

4. @Hunaidkhan Я использовал lubridate для получения дней недели в моем другом отчете, и это помогло. Спасибо!

5. приветствую вас @AlexeyBurnakov