I have packaged the above posted code as a function and I am posting it here in case someonw would find it useful in the future.
--------------function begin ------------------------- readMat2df <- function(readfiledata, datastr){ tmpdata <- readfiledata[[datastr]] # use the string contained in 'datastr' to acccess the data with that name tmpdata <- drop(tmpdata) # Drops all the unnecessary indexes with length 1 and the list becomes much simpler # If any of the contents of each cell is a list then "rbind" its elements into a single vector and treat it as a factor # These elements were represented as cell elements of a cell array in the MATLAB structure. for (k in 1:length(tmpdata)){ if (mode(tmpdata[[k]]) == "list") { tmpdata[[k]]<- as.factor(do.call("rbind", tmpdata[[k]])) } } tmpdf <- as.data.frame(tmpdata) return(tmpdf) } ------------------function end -------------------------------- How to use this thing? Well suppose you had an R data frame and exported it into Matlab MAT v6 format with 'writeMat' function of R.matlab like this: library(R.matlab) writeMat("labpc.mat", labpcexport = labpc) #This give the name 'labpcexport' to the ML structure holding the data Re-load the file in R with 'readMat' like this labpcfile <- readMat("labpc.mat") To get back a data frame from the imported MAT file: 1. Find the name of the variable that holds it. To get of all the variables that were in the MAT file: names(labpcfile) 2. Pass this name and the name of the list that holds all imported MAT data to the function, get a data frame out: myFavoriteDataFrame <- readMat2df(labpcfile, " labpcexport") Hope this is useful for someone. 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.