write.table пишет нежелательный ведущий пустой столбец в заголовок, когда имеет rownames

проверьте этот пример:

> a = matrix(1:9, nrow = 3, ncol = 3, dimnames = list(LETTERS[1:3], LETTERS[1:3]))
> a
  A B C
A 1 4 7
B 2 5 8
C 3 6 9

таблица показывает правильно. Существует два различных способа записать это в файл...

write.csv(a, 'a.csv') который дает как ожидалось:

"","A","B","C"
"A",1,4,7
"B",2,5,8
"C",3,6,9

и write.table(a, 'a.txt') который завинчивает

"A" "B" "C"
"A" 1 4 7
"B" 2 5 8
"C" 3 6 9

действительно, пустая вкладка отсутствует...., который является болью в торце для нисходящих вещей. Действительно ли это - ошибка или функция? Существует ли обходное решение? (кроме write.table(cbind(rownames(a), a), 'a.txt', row.names=FALSE)

С наилучшими пожеланиями, yannick

83
задан Neal 30 September 2016 в 19:04
поделиться

1 ответ

Цитирование ?write.table, раздел CSV файлы:

По умолчанию нет имени столбца для столбца имен строк. Если col.names = NA и row.names = TRUE, то добавляется пустое имя столбца. добавляется пустое имя столбца, что является соглашение, используемое для файлов CSV для для чтения электронными таблицами.

Так вы должны сделать

write.table(a, 'a.txt', col.names=NA)

и получаете

"" "A" "B" "C"
"A" 1 4 7
"B" 2 5 8
"C" 3 6 9
129
ответ дан 24 November 2019 в 08:53
поделиться