问题很简单,考虑下面的例子:
m <- head(iris)
write.csv(m, file = 'm.csv')
m1 <- read.csv('m.csv')
这样做的结果是它m1
与原始对象的不同之处m
在于它有一个名为“X”的新的第一列。如果我真的想让它们相等,我必须使用额外的参数,比如这两个例子:
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.frames m
,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