問題は単純です。次の例を考えてみましょう。
m <- head(iris)
write.csv(m, file = 'm.csv')
m1 <- read.csv('m.csv')
この結果、「X」という名前の新しい最初の列があるというm1
点で、元のオブジェクトとは異なります。m
本当にそれらを等しくしたい場合は、次の 2 つの例のように、追加の引数を使用する必要があります。
write.csv(m, file = 'm.csv', row.names = FALSE)
# and then
m1 <- read.csv('m.csv')
また
write.csv(m, file = 'm.csv')
m1 <- read.csv('m.csv', row.names = 1)
問題は、この違いの理由は何ですか?特に、なぜwrite.csv
とread.csv
が Excel の慣習に固執することを意図しているのに、そもそもエクスポートされたものと同じオブジェクトをインポートしないのでしょうか? 私にとって、これは非常に直感に反する動作であり、非常に望ましくありません。
(これらの関数の csv2 バリアントを使用すると、この結果はまったく同じになります)
前もって感謝します!
これらは data.framesm
でありm1
、例を見るために R を使用したくない場合:
> m
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
> m1
X Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 1 5.1 3.5 1.4 0.2 setosa
2 2 4.9 3.0 1.4 0.2 setosa
3 3 4.7 3.2 1.3 0.2 setosa
4 4 4.6 3.1 1.5 0.2 setosa
5 5 5.0 3.6 1.4 0.2 setosa
6 6 5.4 3.9 1.7 0.4 setosa