I realized that not everyone has Matlab and that basically the issue is purely how to deal with the returned data in R, so I have revised my example code and made it easier to copy-paste and run:
#Make a data frame in R Maker <- factor(c("HP", "HP", "Sony", "DELL", "whitebox", "whitebox")) CPUspeed <- c(2,4,2.5,2.5,2,5) HDD <- c(80, 250, 100, 100, 80, 300) RAM <- c(2, 2, 1, 2, 2, 4) labpc <- data.frame(Maker, CPUspeed, HDD, RAM) labpc #Save in Matlab v6 format with 'writeMat' library(R.matlab) writeMat("labpc.mat", labpcexport = labpc) #Load the file in R with 'readMat' labpcfile <- readMat("labpc.mat") labpcimport <- labpcfile$labpcexport labpcimport # This is the last line output #, , 1 # # [,1] #Maker List,6 #CPUspeed Numeric,6 #HDD Numeric,6 #RAM Numeric,6 Now, how do I convert the result held in labpcimport back to a data frame? Thanks in advance, TL On Thu, Mar 27, 2008 at 1:27 AM, Tribo Laboy <[EMAIL PROTECTED]> wrote: > Hi to the list, > > I am trying to find a way to painlessly move structured data back and > forth between R and Matlab (also Octave). For this purpose I found the > R.matlab package great help. I wish to use a Matlab -v6 MAT file as an > intermediary format, because it is well read by both Matlab and > Octave. It is also well read by 'readMat' function in R.matlab > package, but that is where I run into problems because of poor > knowledge of R. > > By structured data I mean data in data frames in R and the closest > equivalent - structures in Matlab. Here is what I have done. > > ----------------------------------------------------- > Make a data frame in R and export it > ----------------------------------------------------- > > > Maker <- factor(c("HP", "HP", "Sony", "DELL", "whitebox", "whitebox")) > > CPUspeed <- c(2,4,2.5,2.5,2,5) > > HDD <- c(80, 250, 100, 100, 80, 300) > > RAM <- c(2, 2, 1, 2, 2, 4) > > labpc <- data.frame(Maker, CPUspeed, HDD, RAM) > > > labpc > Maker CPUspeed HDD RAM > 1 HP 2.0 80 2 > 2 HP 4.0 250 2 > 3 Sony 2.5 100 1 > 4 DELL 2.5 100 2 > 5 whitebox 2.0 80 2 > 6 whitebox 5.0 300 4 > > > library(R.matlab) > > writeMat("labpc.mat", labpcdata = labpc) > -------------------------------------------------------------- > > -------------------------------------------------------------- > In MATLAB - everything is as expected > -------------------------------------------------------------- > load('labpc.mat') > > >> labpcdata > > labpcdata = > > Maker: {6x1 cell} > CPUspeed: [6x1 double] > HDD: [6x1 double] > RAM: [6x1 double] > > >> class(labpcdata) > > ans = > > struct > > >> labpcstruct = labpcdata > >> save('labpcstruct.mat', 'labpcstruct') > --------------------------------------------------------- > > > ------------------------------------------------------- > Back in R - how to rebuild the data frame from the list labpcstruct? > ------------------------------------------------------- > > labpcfile <- readMat("labpcstruct.mat") > > labpcfile > $labpcstruct > , , 1 > > [,1] > Maker List,6 > CPUspeed Numeric,6 > HDD Numeric,6 > RAM Numeric,6 > > > attr(,"header") > attr(,"header")$description > [1] "MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Wed Mar 26 > 15:49:21 2008 " > > attr(,"header")$version > [1] "5" > > attr(,"header")$endian > [1] "little" > > > labpcstruct <- labpcfile$labpcstruct > > labpcstruct > , , 1 > > [,1] > Maker List,6 > CPUspeed Numeric,6 > HDD Numeric,6 > RAM Numeric,6 > > > > typeof(labpcstruct) > [1] "list" > > -------------------------------------------- > > So if there is any kind soul that will tell me how to get back the > original data frame from the imported list 'labpcstruct', that would > be great. > > Regards, > > TL > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.