问题很简单,考虑下面的例子:
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')
or
write.csv(m, file = 'm.csv')
m1 <- read.csv('m.csv', row.names = 1)
问题是,造成这种差异的原因是什么?特别是,为什么如果write.csv
and read.csv
据说是为了遵守 Excel 约定,但不导入最初导出的同一对象?对我来说,这是一种非常违反直觉的行为,非常不可取。
(如果我使用这些函数的 csv2 变体,结果会完全相同)
提前致谢!
这些是数据框m
and 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