R - c () konvertiert unerwartet Namen benannter Vektoren in UTF-8. Ist das ein Fehler?

9

Ich habe ein seltsames Verhalten von c() mit R 3.3.2 unter Windows mit nicht-US-Englisch Gebietsschema konfrontiert. Es konvertiert die Namen der benannten Vektoren in UTF-8.

%Vor%

Dachte, dass dieses Problem für die meisten Leute nicht problematisch ist, es ist kritisch für diejenigen, die benannte Vektoren als Nachschlagetabellen verwenden (Beispiel ist hier: Ссылка ). Ich bin auch derjenige, der mit dem Verhalten der dplyr-Funktion select () festgefahren ist.

Ich bin mir nicht ganz sicher, ob dieses Verhalten ein Fehler oder ein Design ist. Sollte ich einen Fehlerbericht an R Core senden?

Hier finden Sie Informationen über meine R-Umgebung:

%Vor%     
yutannihilation 03.12.2016, 01:44
quelle

1 Antwort

2

Sie sollten weiterhin names(c(x)) == names(x) auf Ihrem System sehen. Die Änderung der Codierung um c() ist möglicherweise unbeabsichtigt, sollte sich jedoch in den meisten Szenarien nicht auf Ihren Code auswirken.

Unter Windows, das kein UTF-8-Gebietsschema hat, ist es die sicherste Wette, alle Zeichenketten zunächst via enc2utf8() in UTF-8 zu konvertieren und dann in UTF-8 zu bleiben. Dies wird auch sichere Suchen ermöglichen.

Sprachsymbole (wie in dplyrs group_by() verwendet) sind ein ganz anderes Thema. Aus irgendeinem Grund werden sie immer in der nativen Codierung interpretiert. (Probieren Sie as.name(names(c(x))) aus.) Es ist jedoch immer noch am besten, sie in UTF-8 zu haben und vor dem Aufruf von as.name() in native umzuwandeln. Das sollte dplyr machen, wir sind noch nicht ganz da.

Ich empfehle, bei Verwendung von dplyr unter Windows nur ASCII-Zeichen für Spaltennamen zu verwenden. Dies erfordert einige Disziplin, wenn Sie sich auf tidyr::spread() für Nicht-ASCII-Spalteninhalte verlassen. Sie könnten auch in Erwägung ziehen, zu einem System (OS X oder Linux) zu wechseln, das nativ mit UTF-8 arbeitet.

    
krlmlr 10.12.2016, 14:24
quelle

Tags und Links