以下に再現可能な例を書いてみました。これは、.Rmdと.rの組み合わせです。うまくいけば、あなたは理由を見ることができます。
私が抱えている問題は、コードがコンソールで直接実行されるか、HTMLに編まれているかによって、英語以外の文字の扱いが異なることです。
以下の例では、üとöの文字を使用して小さなdata.frameを作成し、それをcsvに書き込んでから、もう一度読み込みます。
書き込みと読み取りの両方がチャンクの内側または外側で行われる場合、すべてが順調です。
しかし、書き込みと読み取りが異なる場所で行われる場合は、異なるエンコーディングが使用されます(私は思います)。と文字が混同されます。
つまり、データを読み込むときは、.RmdファイルをコンパイルするときにRで直接作業するときとは異なるエンコーディングが必要になります。
私が見る限り、ロケールは常に同じであるため、何が起こっているのかわかりません。
何か案は?
csvを直接読み書きして、新しいデータファイルを作成します
df2 <- data.frame(Cäl1 = c(1,2), Col2 = c("ü","a"))
write.csv(df2, file="df2.csv")
read.csv("df2.csv")
Sys.getlocale(category = "LC_ALL")
次に、ドキュメント全体を編んでみてください(チャンクを実行するだけで動作が異なります)
```{r read_inside}
read.csv("df2.csv")
Sys.getlocale(category = "LC_ALL")
```
data.frameがチャンク内に作成されるため、この2番目のチャンクは機能します
```{r write_read_inside}
df2 <- data.frame(Cäl1 = c(1,2), Col2 = c("ü","a"))
write.csv(df2, file="df2.csv")
read.csv("df2.csv")
Sys.getlocale(category = "LC_ALL")
```
セッション情報:
R version 2.15.0 (2012-03-30)
Platform: x86_64-pc-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252 LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_2.15.0