Wenn ich spanisches oder französisches Gebietsschema für die abgekürzte Version der Monatsbezeichnungen verwende, werden diese mit "ene\." angezeigt, aber es sollte nur "ene." sein. Ich verwende Windows 10.
> library(lubridate)
> Sys.getlocale("LC_TIME")
## [1] "Spanish_Spain.1252"
> dt <- seq(ymd("2018-01-01"), ymd("2018-12-31"), "day")
> head(month(dt, label = TRUE))
## [1] ene\\. ene\\. ene\\. ene\\. ene\\. ene\\.
## 12 Levels: ene\\. < feb\\. < mar\\. < abr\\. < may\\. < ... < dic\\.
> Sys.setlocale("LC_TIME", "French")
## [1] "French_France.1252"
> head(month(dt, label = TRUE))
## [1] janv\\. janv\\. janv\\. janv\\. janv\\. janv\\.
## 12 Levels: janv\\. < févr\\. < mars < avr\\. < mai < juin < ... < déc\\.
> Sys.setlocale("LC_TIME", "English")
## [1] "English_United States.1252"
> head(month(dt, label = TRUE))
## [1] Jan Jan Jan Jan Jan Jan
## 12 Levels: Jan < Feb < Mar < Apr < May < Jun < Jul < Aug < Sep < ... < Dec
Dies scheint daran zu liegen, dass die Monatsnamen reguläre Ausdrücke sind; Daher müssen wir auch kanonische Namen für die Ausgabe speichern.
Dies ist sicherlich nur ein Windows-Problem. Wahrscheinlich tatsächlich ein Regex-Bug.
@dominicroye könnten Sie bitte die folgende Ausgabe bereitstellen (wobei local durch Ihre französischen und spanischen Gebietsschemanamen ersetzt wird)?
Sys.setlocale("LC_TIME", "es_ES.utf8")
format <- "%a@%A@%b@%B@%p@"
enc2utf8(unique(format(lubridate:::.date_template, format = format)))
## [1] "jue@jueves@ene@enero@@" "lun@lunes@feb@febrero@@" "mar@martes@mar@marzo@@"
## [4] "dom@domingo@abr@abril@@" "vie@viernes@may@mayo@@" "mar@martes@jun@junio@@"
## [7] "vie@viernes@jul@julio@@" "mié@miércoles@ago@agosto@@" "mar@martes@sep@septiembre@@"
## [10] "vie@viernes@oct@octubre@@" "mar@martes@nov@noviembre@@" "sáb@sábado@dic@diciembre@@"
Auch der Wert von
str(.get_locale_regs("...your_locales..."))
es_ES.utf8 existiert nicht in Windows.
Hier ist meine Ausgabe von Ihrem Code:
SPANISCH
> Sys.setlocale("LC_TIME", "Spanish_Spain.1252")
> format <- "%a@%A@%b@%B@%p@"
> enc2utf8(unique(format(lubridate:::.date_template, format = format)))
[1] "ju.@jueves@ene.@enero@@" "lu.@lunes@feb.@febrero@@" "ma.@martes@mar.@marzo@@"
[4] "do.@domingo@abr.@abril@@" "vi.@viernes@may.@mayo@@" "ma.@martes@jun.@junio@@"
[7] "vi.@viernes@jul.@julio@@" "mi.@miércoles@ago.@agosto@@" "ma.@martes@sep.@septiembre@@"
[10] "vi.@viernes@oct.@octubre@@" "ma.@martes@nov.@noviembre@@" "sá.@sábado@dic.@diciembre@@"
> str(lubridate:::.get_locale_regs("Spanish_Spain.1252"))
List of 6
$ alpha_flex : Named chr [1:6] "((?<b_b>ene\\.|feb\\.|mar\\.|abr\\.|may\\.|jun\\.|jul\\.|ago\\.|sep\\.|oct\\.|nov\\.|dic\\.)|(?<B_b>enero|febre"| __truncated__ "(?<B_B>enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)(?![[:alpha:]])" "((?<a_a>ju\\.|lu\\.|ma\\.|do\\.|vi\\.|mi\\.|sá\\.)|(?<A_a>jueves|lunes|martes|domingo|viernes|miércoles|sábado)"| __truncated__ "(?<A_A>jueves|lunes|martes|domingo|viernes|miércoles|sábado)(?![[:alpha:]])" ...
..- attr(*, "names")= chr [1:6] "b" "B" "a" "A" ...
$ num_flex : Named chr [1:24] "(?<d>[012]?[1-9]|3[01]|[12]0)(?!\\d)" "(?<q>[0]?[1-4])(?!\\d)" "(?<H>2[0-4]|[01]?\\d)(?!\\d)" "(?<H>2[0-4]|[01]?\\d)(?!\\d)" ...
..- attr(*, "names")= chr [1:24] "d" "q" "H" "h" ...
$ alpha_exact: Named chr [1:6] "((?<b_b_e>ene\\.|feb\\.|mar\\.|abr\\.|may\\.|jun\\.|jul\\.|ago\\.|sep\\.|oct\\.|nov\\.|dic\\.)|(?<B_b_e>enero|f"| __truncated__ "(?<B_B_e>enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)(?![[:alpha:]])" "((?<a_a_e>ju\\.|lu\\.|ma\\.|do\\.|vi\\.|mi\\.|sá\\.)|(?<A_a_e>jueves|lunes|martes|domingo|viernes|miércoles|sáb"| __truncated__ "(?<A_A_e>jueves|lunes|martes|domingo|viernes|miércoles|sábado)(?![[:alpha:]])" ...
..- attr(*, "names")= chr [1:6] "b" "B" "a" "A" ...
$ num_exact : Named chr [1:24] "(?<d_e>[012][1-9]|3[01]|[12]0)" "(?<q_e>[0][1-4])" "(?<H_e>2[0-4]|[01]\\d)" "(?<H_e>2[0-4]|[01]\\d)" ...
..- attr(*, "names")= chr [1:24] "d" "q" "H" "h" ...
$ wday_names :List of 2
..$ abr : chr [1:7] "do\\." "lu\\." "ma\\." "mi\\." ...
..$ full: chr [1:7] "domingo" "lunes" "martes" "miércoles" ...
$ month_names:List of 2
..$ abr : chr [1:12] "ene\\." "feb\\." "mar\\." "abr\\." ...
..$ full: chr [1:12] "enero" "febrero" "marzo" "abril" ...
FRANZÖSISCH
> Sys.setlocale("LC_TIME", "French_France.1252")
> format <- "%a@%A@%b@%B@%p@"
> enc2utf8(unique(format(lubridate:::.date_template, format = format)))
[1] "jeu.@jeudi@janv.@janvier@@" "lun.@lundi@févr.@février@@" "mar.@mardi@mars@mars@@"
[4] "dim.@dimanche@avr.@avril@@" "ven.@vendredi@mai@mai@@" "mar.@mardi@juin@juin@@"
[7] "ven.@vendredi@juil.@juillet@@" "mer.@mercredi@août@août@@" "mar.@mardi@sept.@septembre@@"
[10] "ven.@vendredi@oct.@octobre@@" "mar.@mardi@nov.@novembre@@" "sam.@samedi@déc.@décembre@@"
> str(lubridate:::.get_locale_regs("French_France.1252"))
List of 6
$ alpha_flex : Named chr [1:6] "((?<b_b>janv\\.|févr\\.|mars|avr\\.|mai|juin|juil\\.|août|sept\\.|oct\\.|nov\\.|déc\\.)|(?<B_b>janvier|février|"| __truncated__ "(?<B_B>janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)(?![[:alpha:]])" "((?<a_a>jeu\\.|lun\\.|mar\\.|dim\\.|ven\\.|mer\\.|sam\\.)|(?<A_a>jeudi|lundi|mardi|dimanche|vendredi|mercredi|s"| __truncated__ "(?<A_A>jeudi|lundi|mardi|dimanche|vendredi|mercredi|samedi)(?![[:alpha:]])" ...
..- attr(*, "names")= chr [1:6] "b" "B" "a" "A" ...
$ num_flex : Named chr [1:24] "(?<d>[012]?[1-9]|3[01]|[12]0)(?!\\d)" "(?<q>[0]?[1-4])(?!\\d)" "(?<H>2[0-4]|[01]?\\d)(?!\\d)" "(?<H>2[0-4]|[01]?\\d)(?!\\d)" ...
..- attr(*, "names")= chr [1:24] "d" "q" "H" "h" ...
$ alpha_exact: Named chr [1:6] "((?<b_b_e>janv\\.|févr\\.|mars|avr\\.|mai|juin|juil\\.|août|sept\\.|oct\\.|nov\\.|déc\\.)|(?<B_b_e>janvier|févr"| __truncated__ "(?<B_B_e>janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)(?![[:alpha:]])" "((?<a_a_e>jeu\\.|lun\\.|mar\\.|dim\\.|ven\\.|mer\\.|sam\\.)|(?<A_a_e>jeudi|lundi|mardi|dimanche|vendredi|mercre"| __truncated__ "(?<A_A_e>jeudi|lundi|mardi|dimanche|vendredi|mercredi|samedi)(?![[:alpha:]])" ...
..- attr(*, "names")= chr [1:6] "b" "B" "a" "A" ...
$ num_exact : Named chr [1:24] "(?<d_e>[012][1-9]|3[01]|[12]0)" "(?<q_e>[0][1-4])" "(?<H_e>2[0-4]|[01]\\d)" "(?<H_e>2[0-4]|[01]\\d)" ...
..- attr(*, "names")= chr [1:24] "d" "q" "H" "h" ...
$ wday_names :List of 2
..$ abr : chr [1:7] "dim\\." "lun\\." "mar\\." "mer\\." ...
..$ full: chr [1:7] "dimanche" "lundi" "mardi" "mercredi" ...
$ month_names:List of 2
..$ abr : chr [1:12] "janv\\." "févr\\." "mars" "avr\\." ...
..$ full: chr [1:12] "janvier" "février" "mars" "avril" ...
Ok, unter Windows kommen alle Abkürzungen mit Punkten am Ende. Lass mich sehen was ich machen kann.
Sollte behoben worden sein. Wäre sehr dankbar, wenn Sie die Entwicklerversion ausprobieren und mir mitteilen könnten, ob sie jetzt richtig funktioniert.
Es funktioniert richtig. Danke!
Ich muss dieses Problem erneut öffnen, da es immer noch mit Wochentagen auftritt. Es tut mir leid, dass ich es jetzt bemerkt habe!
> library(lubridate)
> Sys.getlocale("LC_TIME")
[1] "Spanish_Spain.1252"
> dt <- seq(ymd("2018-01-01"), ymd("2018-12-31"), "day")
> head(wday(dt, label = TRUE))
[1] lu\\. ma\\. mi\\. ju\\. vi\\. sá\\.
Levels: do\\. < lu\\. < ma\\. < mi\\. < ju\\. < vi\\. < sá\\.
Ich bestätige diesen Fehler. Die Lösung für die Funktion guess_formats
(https://github.com/tidyverse/lubridate/commit/cc5f1a6de86863f983fd3f69ac842c31997a03a0) funktioniert jedoch und kann leicht in .get_locale_regs
implementiert werden, die in der wday
Funktion.
Es ist notwendig, diese Zeile (https://github.com/tidyverse/lubridate/blob/6f26b02de432cd9373ad4ce7766c36eacfc29918/R/guess.r#L311) wie folgt zu ändern:
mat[] <- gsub("\\.$", "", mat) # remove abbrev trailing dot in some locales (#781)
mat[] <- gsub("([].|(){^$*+?[])", "\\\\\\1", mat) # escaping meta chars
Ich kann mir vorstellen, dass das mit der Uhr richtig funktioniert, da wir mit regulären Ausdrücken nichts machen:
library(clock)
dt <- seq(date_parse("2018-01-01"), date_parse("2018-12-31"), "day")
head(date_month_factor(dt, labels = "es", abbreviate = TRUE))
#> [1] ene. ene. ene. ene. ene. ene.
#> 12 Levels: ene. < feb. < mar. < abr. < may. < jun. < jul. < ago. < ... < dic.
head(date_weekday_factor(dt, labels = "es", abbreviate = TRUE))
#> [1] lun. mar. mié. jue. vie. sáb.
#> Levels: dom. < lun. < mar. < mié. < jue. < vie. < sáb.
Wenn die Beschriftungen nicht Ihren Erwartungen entsprechen, können Sie jederzeit ein benutzerdefiniertes clock_labels()
Objekt erstellen, das als labels
Argument verwendet wird