87 votes

write.table in R visse l'en-tête quand a 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
 

le tableau s'affiche correctement. Il y a deux manières différentes de l'écrire dans un fichier ...

write.csv(a, 'a.csv') qui donne comme prévu:

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

et write.table(a, 'a.txt') qui bousille

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

en effet, il manque un onglet vide ... ce qui est pénible pour les activités en aval. Est-ce un bug ou une fonctionnalité? Y at-il un travail autour? (autre que write.table(cbind(rownames(a), a), 'a.txt', row.names=FALSE )

À votre santé, yannick

130voto

Marek Points 18000

Citant ?write.table , section de fichiers CSV :

Par défaut, il n'y a pas de nom de colonne pour une colonne de noms de lignes. Si col.names = NA et row.names = TRUE un nom de colonne vide est ajouté. Il s'agit de la convention utilisée pour les fichiers CSV lus par les feuilles de calcul.

Alors tu dois faire

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

et vous obtenez

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X