Of course, this doesn't mean I don't have to learn how to use R, it just means I get to do it all in Matlab (and note for fellow Matlab users, there is a great cheat sheet that shows how to translate between the two).

**1. Install the R package**

*rscproxy*.In R, enter:

>install.packages("rscproxy")

to install the package.

**2. Install the R(D)Com server.**

Download it here. The server allows Matlab to talk with R. I installed it using the default settings without checking or unchecking any boxes. Note this server is built for Scilab, which is an open source version of Matlab, but it seems to work for Matlab too.

**3. Download the Matlab R-Link toolbox**

Get MATLAB_RLINK.zip here, unzip the contents, and paste MATLAB_RLINK in Matlab's toolbox folder (or whatever folder you want). Be sure to add MATLAB_RLINK to your Matlab path.

**4. Restart your computer.**

**5. Is it working?**

To see if the toolbox is working, start Matlab and enter 'Rdemo' at the command prompt. This should evoke:

b =

1 4 9 16 25 36 49 64 81 100

c =

2 5 10 17 26 37 50 65 82 101

**6. Have fun!**

If Rdemo worked, you are ready to go!

For instance, enter the following in Matlab:

openR; %Open connection to R server

x=[1:50]; %create x values in Matlab

putRdata('x',x); %put data into R workspace

evalR('y<-sqrt(x)'); %evaluate in R

evalR('plot(x,y)') %plot in R

To close the connection to R, and the graphs opened from R, enter:

closeR;

**7. Problems?**

If the above doesn't work, go to C:\Program Files\R, open the (D)COM Server folder, go to 'bin', copy 'sciproxy.dll', and paste it in C:\Program Files\MATLAB\R2009a\bin (obviously you may have a different path to Matlab's binary folder). Close Matlab, and restart your computer.

If that doesn't help, I probably won't be able to help, but go ahead and ask as someone might know. The site where you downloaded R-Matlab has some useful Q&A so you might inquire there.

**8. Acknowledgments**

This is basically an updated version of Kevin Murphy's site. Please let me know if anything here becomes obsolete.

**9. Caveat**(added 6/18/12)

From the comments section:

After using R(D)COM and Matlab R-link for a while, I do not recommend it. The COM interface has trouble parsing many commands and it is difficult to debug the code. I recommend using a system command from Matlab as described in the R Wiki. This also avoids having to install all of the RAndFriends programs.

## 25 comments:

Thank you, this was very helpful.

I'm glad it helped!

Many thanks for this write up, it was very helpful.

One problem I ran into was that I had R installed on a server, so it never got into my PC's registry since I did not install it on the PC, and the R(D)COM server needs a registry entry to find R. Luckily R has a tool to put its location into the registry. It is in the bin directory of R and called RSetReg.exe. I ran that and then the R(D)COM server was able to find and start the R server.

Thanks Sully, that's really helpful to know.

Thank you very much! That's very helpful! I just want to said that there is a problem with the last R version (2.12.0): it doesn't work! The DCOM can't make the connexion. I still had R version 2.9.2 and by re-installing this old version it works. I don't know at which version the problem occurs, but I think it could be useful to know...

Anonymous: thanks for that tip I sure hope they fix the problem soon!

Thanks for nice instruccions, installed for R 2.13 (32b) and Matlab 2010b. As sugested in matlab Central ( http://www.mathworks.com/matlabcentral/fileexchange/5051), I use the Rcom from http://rcom.univie.ac.at/download/current/statconnDCOM.latest.exe (ver 3.1-2B7) and it works.

RBCCE thanks for the update good to know it is still working.

Thank you for the instructions. They work and I can call R from Matlab, as long as what I'm calling is not a function written in R.

However, if I write a function in R, and if I call this function from Matlab, then I get the following error message: Problem evaluating command source("square.R").

Invoke Error, Dispatch Exception: Object is static; operation not allowed.

Any suggestions on how to solve it are welcome.

Thank you and thanks also for RBCCE, with your tip it works!!!

I have the same Problem here as Cagri, hope someone could help to answer

I have the same problem as Cagri's. Hope someone could help~

Any one successively link R in matlab in linux? I tred to use JRI(java-R interfact) to link them but failed.

Thanks, this was very helpful! I downloaded the package RAndFriends from here, which installs an up-to-date version of R and rscproxy. Then I downloaded an up-to-date version of statconnDCOM from the same page (at the time of writing, version 3.3-0B2). It worked perfectly on Windows 7!

Very nice instructions! For me (Windows 7) worked the RAndFriends installation

Thanks for letting me know. It is useful to know the instructions still work!

After using R(D)COM and Matlab R-link for a while, I do not recommend it. The COM interface has trouble parsing many commands and it is difficult to debug the code. I recommend using a system command from Matlab as described in the R Wiki. This also avoids having to install all of the RAndFriends programs.

Thanks Cary I will look into that, in the meantime I'm posting your comment in the main body of this post.

Thanks, very helpful!

sometimes there is something wrong with the R(D)com server.

But the latest one is mostly like running well.

http://rcom.univie.ac.at/download/current/statconnDCOM.latest.exe (ver 3.1-2B7)

Thanks Chunguo: I will put a permanent link to that...

Thank you Eric. It works very well :)

Hi Eric,

Just starting to use R being a long time Matlab user. R has great statistics package but prefer to use Matlab for all its features. I just tried this out with R 3.1.2 and works great. I had installed the RExcel so already had the R(D)COM and rscproxy installed. No problems at all in Matlab. Thanks for the information.

It is great help! Thanks!

Hi Eric,

Thanks! It works real good with R 32Bit.

Is there the possibility to work with R 64Bit as well?

Roland I am not sure --- if anyone knows please let us know.

Post a Comment