Get weekdays in English in R

后端 未结 6 1371
[愿得一人]
[愿得一人] 2020-12-07 21:03

I am using R outside the US and I got everything working in English, but the result of weekdays() is still in Spanish:

Day <- seq(as.Date(\"2         


        
相关标签:
6条回答
  • 2020-12-07 21:43

    From my answer here, you can get weekdays in English without messing with locales like this:

    c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", 
      "Friday", "Saturday")[as.POSIXlt(Day)$wday + 1]
    
    0 讨论(0)
  • 2020-12-07 21:46
    Sys.setlocale("LC_TIME", "C")
    

    did the trick for me. Also this don't bring us OS reports request to set locale to "EN" cannot be honored error message.

    0 讨论(0)
  • 2020-12-07 21:55

    Under windows RStudio

    Sys.setlocale("LC_TIME", "English")

    That was the only thing that worked for me.

    0 讨论(0)
  • 2020-12-07 22:05

    How about this:

    dev_null <- Sys.setlocale("LC_TIME", "english")
    
    0 讨论(0)
  • 2020-12-07 22:07

    I faced the very same problem trying to change the locale from es_ES to en_US (both UTF-8).

    R message is given by R main workspace, as it cannot change system locale. If code is inserted into an R-script a new workspace (the running one) is created, and locale can be overriden.

    In my code I included the following lines:

    curr_locale <- Sys.getlocale("LC_TIME")
    Sys.setlocale("LC_TIME","en_US.UTF-8")
    
    #<specific code for graph generation>
    
    Sys.setlocale("LC_TIME",curr_locale)
    

    That made the change!

    0 讨论(0)
  • 2020-12-07 22:08

    Printing of Date and POSIX*t objects seems to be controlled by the LC_TIME locale category.

    On Windows, you change it like this:

    ## First, save the current value so we can restore it later
    Sys.getlocale("LC_TIME")
    # [1] "English_United States.1252"
    
    ## First in Spanish
    Sys.setlocale("LC_TIME","Spanish Modern Sort")
    # [1] "Spanish_Spain.1252"
    weekdays(Sys.Date()+0:6)
    # [1] "lunes"     "martes"    "miércoles" "jueves"    "viernes"   "sábado"   
    # [7] "domingo"  
    
    ## Then back to (US) English
    Sys.setlocale("LC_TIME","English United States")
    # [1] "English_United States.1252"
    weekdays(Sys.Date()+0:6)
    # [1] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Saturday" 
    # [7] "Sunday" 
    

    On most *NIXes, the equivalent would be:

    Sys.setlocale("LC_TIME", "en_US")
    

    The particular locale names are OS-dependent, as mentioned in ?Sys.setlocale. For names accepted by Windows, see here. For names accepted by Linux, see here.

    0 讨论(0)
提交回复
热议问题