Проблема проста, рассмотрим следующий пример:
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