Ecriture d'une matrice dans un fichier texte

Questions sur les objets de R et la manipulation des données

Modérateur : Groupe des modérateurs

Sébastien Hamel
Messages : 71
Enregistré le : 11 Mai 2006, 08:00

Ecriture d'une matrice dans un fichier texte

Messagepar Sébastien Hamel » 18 Juil 2006, 13:59

Possédant une matrice nommée Paramètre de type: ncol=1 & nligne=50
avec des noms différents de rownames pour chacunes des 50 lignes: exemple:

nomligne1=NbreClasse -> colonne 1=4

NomLignes Colonne1
____________________
NbreClasse 4
AnneeVGT 2002
Classe 1 Coniferes
......

(en fait on peut assimiler cette matrice à un vecteur puisque il est renseigné dans cette matrice que les noms des lignes puis la colonne1)

Comment puis-je sauvegarder la même structure dans un fichier texte?
dois-je utiliser write.matrix (Paramètres, file="Parametres.txt"......?) ou write.table (Paramètres, file="Parametres.txt"......?)?
Donc ce qui m'intéresse ce sont les ....? car j'ai essayé de retrouver la meme configuration que ma matrice de départ mais je n'y arrive pas.
Le but est bien sur de sauvegarder cette matrice & par la suite la lire avec read.table & retrouver la meme configuration qu'à l'initial......

Pierre Bady
Messages : 405
Enregistré le : 02 Mai 2006, 07:46

Messagepar Pierre Bady » 18 Juil 2006, 15:01

bonjour,

voici un p'tit exemple :

Code : Tout sélectionner

> mat1 <- matrix(rnorm(4))
> mat1
           [,1]
[1,]  1.2817374
[2,]  0.6022228
[3,] -0.3070223
[4,] -0.4184181
> write.table(mat1,file="mat1.txt")
> read.table("mat1.txt",h=T)
          V1
1  1.2817374
2  0.6022228
3 -0.3070223
4 -0.4184181
>

Au passage, on remarque que le type de l'objet a changé ...
c'est pas vraiment grave ... l'utilisation de la fonction "as.matrix"
permettra de réobtenir un objet de type "matrix".

sinon pour les options supplémentaires de ces fonctions :

Code : Tout sélectionner

> ?write
> ?write.table
> ?read.table



en espérant t'avoir aidé un peu :)

@+++

pierre

Sébastien Hamel
Messages : 71
Enregistré le : 11 Mai 2006, 08:00

Messagepar Sébastien Hamel » 18 Juil 2006, 16:22

Pierre Bady a écrit :Au passage, on remarque que le type de l'objet a changé ...
c'est pas vraiment grave ... l'utilisation de la fonction "as.matrix"
permettra de réobtenir un objet de type "matrix".


Ok, j'obtiens de nouveau un objet de type matrice mais je perds mes noms de lignes initiaux, c'est-à-dire que si m'a "ligne n°1" portait le nom de voirie par exemple, je me retrouve maintenant avec un nom de "ligne n°1" égale à 1 & non plus voirie comme pour ma matrice initiale.... & de même pour les autres lignes...

Alors comment faire pour justement préserver ces noms de lignes initiaux?

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 18 Juil 2006, 16:35

Dans l'aide de read.table...

Section "Details":

...
If row.names is not specified and the header line has one less entry than the number of columns, the first column is taken to be the row names. This allows data frames to be read in from the format in which they are printed. If row.names is specified and does not refer to the first column, that column is discarded from such files.
...

Exemple

Code : Tout sélectionner

> mat <- matrix(1:4, ncol = 2)
> dimnames(mat) <- list(paste("l", 1:2, sep = ""),
+                       paste("c", 1:2, sep = ""))
>
> mat
   c1 c2
l1  1  3
l2  2  4
>
> write.table(mat, "mat.txt", row.names = TRUE, col.names = TRUE)
>
> read.table("mat.txt", header = TRUE)
   c1 c2
l1  1  3
l2  2  4


Avec une matrice sans nom de colonne, je suggérerais de transposer la matrice pour revenir à un cas standard et éviter de générer des noms de colonnes:

Code : Tout sélectionner

> mat <- matrix(1:4, 2)
> rownames(mat) <- c("a", "b")
> write.table(mat, "mat.txt", row.names = TRUE)
> read.table("mat.txt")
  V1 V2
a  1  3
b  2  4
>
> tmat <- t(mat)
> write.table(tmat, "tmat.txt")
> read.table("tmat.txt")
  a b
1 1 2
2 3 4



Renaud


Retourner vers « Archives : Manipulation de données avec R »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité