2010-11-30 8 views
3

Eh bien j'ai une matrice en Matlab, avec 4 dimensions. Je voudrais exporter cette matrice pour l'utiliser en R (je veux tracer avec elle). Le problème pour moi est que je ne sais pas comment exporter une matrice qui peut être utilisée par R, et aussi je ne sais pas comment importer des données dans R. Au fond, ce que j'ai essayé de faire est d'exporter ma dans Matlab en utilisant dlmwrite, et en l'important dans R en utilisant read.table(). Malheureusement, cela ne fonctionne pas.Comment utiliser les données Matlab dans R?

+9

Avez-vous regardé dans le paquet 'R.matlab'? http://cran.r-project.org/web/packages/R.matlab/index.html – mropa

+1

Dans quels formats pouvez-vous exporter le tableau à partir de Matlab. Si vous pouviez inclure un exemple de ce genre de fichier, je suis sûr que les efforts combinés de la communauté R sur SO peuvent trouver un moyen de le lire dans un tableau R. –

+0

http://cran.r-project.org/doc/manuals/R-data.pdf devrait vous aider à importer des données dans R. –

Répondre

3

Vous pouvez écrire n'importe quel tableau en binaire avec fwrite, et le lire dans R avec readBin. En R cela donnera un vecteur que vous pouvez mettre en forme avec array() ou matrix().

Voici un exemple très simple.

a = magic(4) 

con = fopen('a.bin', 'w'); 
fwrite(con, a * 0.01, 'float64') 
fclose(con) 

a * 0.01 

ans =

0,1600 0,0200 0,0300 0,1300

0,0500 0,1100 0,1000 0,0800

0,0900 0,0700 0,0600 0,1200

0,0400 0,1400 0,1500 0,0100

Maintenant en R:

matrix(readBin("a.bin", "double", 16), 4) 

[1] [2] [3] [4]

[1,] 0,16 0,02 0,03 0,13

[2,] 0,05 0,11 0,10 0,08

[3] 0,09 0,07 0,06 0,12

[4,] 0,04 0,14 0,15 0,01

Vous pouvez remplacer « un » avec un tableau 4D, et changer le code de R à cela et cela devrait fonctionner tout aussi bien:

## assume 4 dimensions with particular sizes 
dims <- c(10, 5, 2, 3) 
a <- array(readBin("a.bin", "double", prod(dims)), dims) 

Enfin, notez que cela suppose le même ordre d'octets dans Matlab et R. Voir machineformat dans l'aide fwrite Matlab si vos systèmes d'extrémité sont différents.

+0

J'avais l'habitude de faire beaucoup, je vais essayer de déterrer code réel et expliquer plus. – mdsumner

+9

Mais, le paquet R.matlab est très bon pour lire les fichiers .mat et peut facilement gérer des sorties beaucoup plus variées que cela. – mdsumner

Questions connexes