Ich bin verwirrt darüber, warum bestimmte Zeichen (zB "Ě", "Č" und "ŝ") ihre diakritischen Zeichen in einem Datenrahmen verlieren, während andere (zB "Š" und "š") nicht. Mein Betriebssystem ist übrigens Windows 10. In meinem Beispielcode unten hat ein Vektor czechvec 11 Einzelzeichenfolgen, alle slawischen Akzentbuchstaben. R zeigt diese Zeichen richtig an. Dann wird ein Datenrahmen mydf mit czechvec als zweite Spalte erstellt (die Funktion I() wird verwendet, damit sie nicht in einen Faktor umgewandelt wird). Aber wenn R mydf oder eine Zeile von mydf anzeigt, konvertiert es die meisten dieser Zeichen in ihr normales Ascii-Äquivalent; z.B. mydf [3,] zeigt den Charakter als "E" nicht "Ě". Aber Subskribierung mit Zeile und Spalte, z. mydf [3,2], es zeigt richtig das akzentuierte Zeichen ("Ě"). Warum sollte es einen Unterschied machen, ob R die ganze Zeile oder nur eine Zelle anzeigt? Und warum sind einige Zeichen wie "Š" völlig unbeeinflusst? Auch wenn ich diesen Datenrahmen in eine Datei schreibe, verliert er vollständig den Akzent, obwohl ich fileEncoding = "UTF-8" angegeben habe.R: akzentuierte Zeichen im Datenrahmen
> charvals <- c(193, 269, 282, 268, 262, 263, 348, 349, 350, 352, 353)
> hexvals <- as.hexmode(charvals)
> czechvec <- unlist(strsplit(intToUtf8(charvals), ""))
> czechvec
[1] "Á" "č" "Ě" "Č" "Ć" "ć" "Ŝ" "ŝ" "Ş" "Š" "š"
>
> mydf = data.frame(dec=charvals, char=I(czechvec), hex=I(format(hexvals, width=4, upper.case=TRUE)))
> mydf
dec char hex
1 193 Á 00C1
2 269 c 010D
3 282 E 011A
4 268 C 010C
5 262 C 0106
6 263 c 0107
7 348 S 015C
8 349 s 015D
9 350 S 015E
10 352 Š 0160
11 353 š 0161
> mydf[3,2]
[1] "Ě"
> mydf[3,]
dec char hex
3 282 E 011A
>
> write.table(mydf, file="myfile.txt", fileEncoding="UTF-8")
>
> df2 <- read.table("myfile.txt", stringsAsFactors=FALSE, fileEncoding="UTF-8")
> df2[3,2]
[1] "E"
Bearbeitet hinzuzufügen: Per Ernest A ist dieses Verhalten in Linux nicht reproduzierbar. Es muss ein Windows-Problem sein. (Ich verwende R 3.4.1 für Windows.)