write.table in R screws up header when has rownames

Posted by Yannick Wurm on Stack Overflow See other posts from Stack Overflow or by Yannick Wurm
Published on 2010-03-19T15:09:10Z Indexed on 2010/03/19 15:11 UTC
Read the original article Hit count: 196

Filed under:

Hello, check this example:

> 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

the table displays correctly. There are two different ways of writing it to file...

write.csv(a, 'a.csv') which gives as expected:

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

and write.table(a, 'a.txt') which screws up

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

indeed, an empty tab is missing.... which is a pain in the butt for downstream things. Is this a bug or a feature? Is there a workaround? (other than write.table(cbind(rownames(a), a), 'a.txt', row.names=FALSE)

Cheers, yannick

© Stack Overflow or respective owner

Related posts about r