Hi, a follow up on this as well: I've fixed the below bug in writeMat(). R.matlab v1.2.4 is now available on CRAN. Please update.
Henrik On Wed, Oct 1, 2008 at 12:55 PM, Henrik Bengtsson <[EMAIL PROTECTED]> wrote: > Hi. > > On Sat, Sep 27, 2008 at 5:17 AM, Steele, Dr Douglas <[EMAIL PROTECTED]> wrote: >> Hi >> >> I am using Ubuntu 8.04 64 bit, R as below, Matlab 7.6.0. I would like to >> transfer mat files back and forward between R and Matlab. Whilst I have >> used Matlab for years its been a long time since I have used R (hence >> question may be a bit simple) >> >> Running code >> >> A <- c(1:10) >> dim(A) <- c(2,5) >> library(R.matlab) >> writeMat('A.mat', A=A) >> >> Does not appear to generate any mat file either in local directory or in >> /tmp/R* > > It *is* created in the *current* directory. If there are no errors, > then it should be there. Use can use getwd() to see which this is, > e.g. > > library("R.matlab"); > A <- c(1:10); > dim(A) <- c(2,5); > writeMat("A.mat", A=A); > print(getwd()); > > [1] "C:/Users/foo/braju.com.R/R.matlab" > > print(list.files()) > [1] "A.mat" > > res <- readMat("A.mat"); >> str(res) > List of 1 > $ A: int [1:2, 1:5] 1 2 3 4 5 6 7 8 9 10 > - attr(*, "header")=List of 3 > ..$ description: chr "MATLAB 5.0 MAT-file, Platform: windows, > Software: R v2.7.2, Created on: Wed Oct 01 12:40:23 2008 > " > ..$ version : chr "5" > ..$ endian : chr "little" > >> >> I tried both current version of R.matlab and older version because of bug >> https://stat.ethz.ch/pipermail/r-help/2008-September/173432.html > > Correct. You should use install the old R.matlab v1.2.1, because > v1.2.3 (as well as v1.2.2) contains a bug which is still to be fixed. > >> >> A <- matrix(1:27, ncol=3) >> B <- as.matrix(1:10) >> fn <- paste(tempfile(), ".mat", sep="") >> writeMat(fn, A=A, B=B) >> data <- readMat(fn) >> print(data) >> unlink(fn) > > This is from example(writeMat). It works this far, correct? You > should see 'data' being reported. The unlink() command is there such > that the example script cleans up after itself, i.e. it delete the > temporary MAT file. Skip that last command if you want to grab the > file. > >> onWrite <- function(x) >> writeBin(x$length, con=x$con, size=4, endian="big"); >> writeMat(fn, A=A, B=B, onWrite=onWrite) > > Do *not* use these latter commands. They are modifications of > original example code that is only used to illustrate for advanced > users how to send a MAT structure over a connection. As indicated by > the example code: > > ## Not run: > # When writing to a stream connection the receiver needs to know in > # beforehand how many bytes are available. This can be done by using > # the 'onWrite' argument. > onWrite <- function(x) > writeBin(x$length, con=x$con, size=4, endian="little"); > writeMat(con, A=A, B=B, onWrite=onWrite) > ## End(Not run) > > they are within a "Not run" block, which in R means that they are not > necessarily intended to be executed. If you run the example code with > example(writeMat) that code will not be executed. You obviously > cut'n'paste here, but didn't you see the above comments. How you do > view you help(), i.e. typically help(writeMat) will display those > comments? FYI, the first argument 'con' (supposed to indicate a > connection) is on purpose non-existing and not the same as the 'fn' > argument (pathname) in the preceeding code. > >> >> Does generate a file in /tmp/Rtmpjhfjxw >> -rw-r--r-- 1 dst dst 396 2008-09-27 12:46 file643c9869.mat >> >> When I try to read it into Matlab I get >> >> ??? Error using ==> load >> Unable to read MAT-file /tmp/Rtmpjhfjxw/file643c9869.mat >> >> File may be corrupt. > > Yes, but that is because you use that latter code. Before writing the > MAT structure, it writes the byte size of the structure to the file, > which is not part of the MAT file format. You don't want this. This > is only intended for sending MAT structure over a connection. > >> >> (This is same error message as above link and occurs with old and current >> version of R.matlab) >> >> Any advice would be very helpful > > Hope this helps > > Henrik > >> >> Regards >> >> Douglas >> >> >> >>> sessionInfo() >> R version 2.6.2 (2008-02-08) >> x86_64-pc-linux-gnu >> >> locale: >> LC_CTYPE=en_GB.UTF-8;LC_NUMERIC=C;LC_TIME=en_GB.UTF-8;LC_COLLATE=en_GB.UTF-8;LC_MONETARY=en_GB.UTF-8;LC_MESSAGES=en_GB.UTF-8;LC_PAPER=en_GB.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_GB.UTF-8;LC_IDENTIFICATION=C >> >> attached base packages: >> [1] stats graphics grDevices utils datasets methods base >> >> other attached packages: >> [1] R.matlab_1.2.1 R.oo_1.4.6 R.methodsS3_1.0.3 >> >> loaded via a namespace (and not attached): >> [1] rcompgen_0.1-17 >>> >> >> >> The University of Aberdeen is a charity registered in Scotland, No SC013683. >> >> ______________________________________________ >> 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. >> > ______________________________________________ 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.