A COM based interface that allows you to call R functions from within MATLAB. The functions are:
openR  Connect to an R server process.
evalR  Run an R command.
getRdata  Copies an R variable to MATLAB.
putRdata  Copies MATLAB data to an R variable.
closeR  Close connection to R server process.
Rdemo  An example of using R from withing MATLAB.
Robert Henson (2020). MATLAB Rlink (https://www.mathworks.com/matlabcentral/fileexchange/5051matlabrlink), MATLAB Central File Exchange. Retrieved .
1.1.0.1  Updated license 

1.1.0.0  Add BSD License 

1.0.0.0  Added a "published Mfile" 
Inspired: saveR, Kaplan Meier for right and/or left and/or interval censored data, SUBSYNCHRONOUS RESONANCE, MatEx  Matlab extremes
Create scripts with code, output, and formatted text in a single executable document.
I think this file helps me a lot ! Thx!
macOS and Linux should be removed from Platform Compatibility
I have to conduct statistical analysis for a quite large set of data spread over multiple MATfiles (v7.3). Unfortunately, the Statistics and Machine Learning Toolbox is not sufficient for me, and R seems to be the best solution. I am trying to use my data in R without the need to convert the variables to CSVfiles. MATLAB RLink looks promising, but ...
1. I was unable to download the latest version of the R(D)COM interface. Can I use the R_Scilab_DCOM3.01B5.exe still available from https://cran.rproject.org/contrib/extra/dcom/ ? I am working under W10.
2. I have found another solution for interfacing R and MATLAB which is using Rserve. Sorry for the laic question, but how is the solution with COM interface better than that with TCP/IP server?
When you get the Invoke Error, Dispatch Exception: Object is static; operation not allowed error, you have probably forgotten to load whatever package your function requires  try for example: library(lhs)
Even though I followed MJs instructions I still couldn't get the MATLAB RLink to work :( I'm running MATLAB R2014b and was trying to link it to a freshly installed R v3.1.0 (SDI), with rscproxy v2.0.5 and R(D)COM v3.01B5. Yet I keep getting the following error message when trying to connect to an R server process in MATLAB using the openRcommand:
Error using openR (line 68)
Cannot connect to R.
Error using COM.StatConnectorSrv_StatConnector/Init
Error: Object returned error code: 0x80040013
Also, the StatConnector Test is giving me an error:
Loading StatConnector Server... Done
Initializing R...Function call failed
Code: 2147221485
What am I doing wrong?
The R(D)COM interface required by this code is not free for commercial use. Possibly because of this, it is no longer available from CRAN, so the 'Requires' text above needs updating.
It worked well in most cases.
but when I used evalR to get child element(for example:evalR('a<out$b'),It returns nothing in matlab.
how to solve this problem?
Does it work on Linux?
Works like a charm, thanks!!
The MATLAB Rlink worked very well in most of the cases, but sometime I get a strange error in putRdata.
For example, I try to put a matrix 34x34 of double numbers and it works, then I try to put a matrix 156x2 of double numbers and the execution of the following line fails:
R_lInK_hANdle.SetSymbol(varname,data);
with the following exception message:
MException with properties:
identifier: 'MATLAB:COM:E0'
message: 'Error: The server threw an exception.
Do you have an idea about what could cause the error?
Thanks!
I get the same error message as fawasaa (Loading StatConnector Server... Done
Initializing R...Function call failed
Code: 2147221455
Text: licensing: license expired
Releasing StatConnector Server...Done)
although I followed the latest installation recommendation ("R needs to be installed with the SDI display option..."). Is there a solution to it?
After installing R 3.1.0 and matlab 2012a, I find it reported
Error using COM.StatConnectorSrv_StatConnector/Init
Error: Object returned error code: 0x80040013
Donot know why
I want to link the ieee 14 bus data and solve by using newton rapson method,
I have a problem doing
evalR('gfit = garch(ddta, order=c(1,1))')
evalR('garchcoef = coef(gfit)')
garchcoef = getRdata('garchcoef');
The garchcoef are not the same im matlab than in R. Do you know why ?
Thanks for your help,
so does it connect to existing R session or creates a new one ?? I think It creates a new one as it was working without starting R.
Is it possible to connect to existing R seession ??
So, I'm just beginning to use this and running into some trouble. The install worked fine but I am having issues using the evalR() function to source a function I have saved to disk. First, I attempted to write the code:
[RESULT, STATUS, MSG] = evalR('source('~/R functions/makerm function.R')');
however this provides an error in matlab itself because the portion of the code between the apostrophes of the evalR(‘ ‘) statement does not permit the entire command to be sent to R, specifically the 'source('~/R functions/makerm function.R')' portion of the command is what I want to execute in R. So, I tried the typical matlab method of adding an extra apostrophe within the text to make apostrophes actually read as apostrophes rather than as indicators of groupings within the command. I used the code:
[RESULT, STATUS, MSG] = evalR('source(''~/R functions/makerm function.R'')');
this runs however in the MSG output variable it says
"Error using COM.StatConnectorSrv_StatConnector/Evaluate Invoke Error, Dispatch Exception: There is no connection for this connection ID".
I am not sure as to what connection the error is talking about but I know that the DCOM connection is working since the Rdemo.m runs fine and I am able to send and compute things in my own scripts.
Ultimately, I'm trying to get R functions that I have created and saved on my hard drive to be accessible and used when I send data from Matlab to R. Thanks for any help you can give me regarding how to source a function via the matlab R link interface.
After several issues regarding statconnector I installed randfriends, the dcom prog and my R, then reinstalled R, ran it as admin and installed the dcom from R. Works fine now.
Same as above: not working for Linux?
Thanks to Cary, it seems that RAndFriends can finally solve the 0x80040013 error.
DCOM does not work with the 64bit version of R, when I tried I got the 0x80040013 error.
Everything worked fine when I downloaded and installed RAndFriends from scratch with all default settings.
Hi, I got a error message:
Error using openR (line 68)
Cannot connect to R.
Error using COM.StatConnectorSrv_StatConnector/Init
Error: Object returned error code: 0x80040013
Would you please tell me what's the problem here?
After installing both R (i386 2.12.2) and DCOM I ,I run Rdemo.ok!
for some reason I must call userdefined Rfunction with parameter called FindU.wRef .in my case:
s2='MissingValueCode="999.0"'
s3='p.lev=0.95'
openR
putRdata('s2',s2)
putRdata('s3',s3)
evalR('FindU.wRef(s2,s3,)')
closeR
in Matlab i get following error
Error using evalR (line 58)
Problem evaluating command FindU.wRef(s2,s3).
Error using COM.StatConnectorSrv_StatConnector/EvaluateNoReturn
Invoke Error, Dispatch Exception
i try many times,but i cann't solve this problem.what do i do in case? Any idea why or how can I fix it? Thank you.
After installing both R (i386 2.12.2) and DCOM I ,I run Rdemo.ok!
for some reason I must call userdefined Rfunction with parameter called FindU.wRef .in my case:
s2='MissingValueCode="999.0"'
s3='p.lev=0.95'
openR
putRdata('s2',s2)
putRdata('s3',s3)
evalR('FindU.wRef(s2,s3,)')
closeR
in Matlab i get following error
Error using evalR (line 58)
Problem evaluating command FindU.wRef(s2,s3).
Error using COM.StatConnectorSrv_StatConnector/EvaluateNoReturn
Invoke Error, Dispatch Exception
i try many times,but i cann't solve this problem.what do i do in case? Any idea why or how can I fix it? Thank you.
Hi,
I had the same problem as others. My command was:
a=[1,1,1,2,2,2,3,3,4,4];
b=[1,1,1,2,2,2,3,3,4,4];
putRdata('a',a)
putRdata('b',b);
evalR('c<fisher.test(a,b)$p.value')
And the result was the error:
'Problem evaluating command c<fisher.test(a,b)$p.value.
Invoke Error, Dispatch Exception: Object is static; operation not allowed'
My solution was to 'write' down the command to add the data. Then it worked perfectly.
In my case:
X=num2str(a);
X=strrep(X,' ',',');
eval(['evalR(''a<c(' X ')'')'])
X2=num2str(b);
X2=strrep(X2,' ',',');
eval(['evalR(''b<c(' X2')'')'])
evalR('c<fisher.test(a,b)$p.value')
I thought this (ugly) trick might help some people here.
Sébastien
Seems to me that only functions which don't require a data.frame type object work with this link. Eg, if I want to set up a regression, then project it over new data using the 'predict' function in R  no joy (I just get the fitted values over the original data).
Also, fitting a regression with categorical variables  no joy.
Can anyone confirm for me whether this is right please? I'd be very happy if I was wrong and I just need to change something in my set up to achieve the above.
G
I'm assuming you wouldn't be able to publish a Matlab program (using the compiler) using the R link?
I am among those who report the error:
Invoke Error, Dispatch Exception: Object is static; operation not allowed
I am able to run this:
openR
a = 1:10;
putRdata('a',a)
b = evalR('a^2')
evalR('b < a^2');
evalR('c < b + 1');
c = getRdata('c')
without error, yet, upon running a function from the package known as `seacarb' I get the aforementioned error. I don't suppose anyone has made progress with this?
Chris
I also can't read out "vocano" in matlab using volcano = getRdata('volcano'). Any idea?
Well I reinstalled everything and did not set the R_HOME environment variable. Now the Statconn server test program works OK. When I type Rdemo it works fine, but after getting the volcano data, when I type volcano it returns volcano =
[]
When I try any of the other demo tests, I get
putRdata('a',a)
??? Error using ==> putRdata at 47
Could not put data.
Attempt to reference field of nonstructure array.
Any suggestions??
I get the same error that Patrick reported on 225. I am using R2.10.1. I think I have followed all the instructions. 1. Install rscproxy,
2. set path for matlab_rlink in matlab, 3. installed dcom server, 4. placed sciproxy.dll file in bin folder (I have tried in the matlab bin folder and in the dcom bin folder as well)
What am I doing wrong?? I really would like to get this connection working.
Thanks all.
Loading StatConnector Server... Done
Initializing R...Function call failed
Code: 2147221485
Text: installation problem: unable to load connector
Releasing StatConnector Server...Done
>> Rdemo
??? Error using ==> openR at 68
Cannot connect to R.
Error: Object returned error code: 0x80040013
Error in ==> Rdemo at 6
openR
I have problem with Rlink
when i try to connect to R using
openR
in Matlab i get following error
??? Error using ==> openr
Cannot connect to R.
Invoke Error, Dispatch Exception: The media is write protected
can someone help me to solve this error
I am using
Matlab 6.5
R 2.12.2
Windows XP SP3.
I have several versions of R. I put one of them in the Windows path, say 2.9.2.
However, when the MATLAB code runs openR, the version of R opened is different. I determine that by doing: evalR('v = version') and getting the components.
How do openR determine which R to open.
Max:
Windows XP SP3.
Installed new R2.12.1; installed package rscproxy_1.31.zip
Installed StatconnDCOM1.32B7
Modified Windows path to contain path of R.exe
Ran Server01 – Basic Test.
Got error:
"Load Statconnector Server ... Done
Initializing R function call failed Code 2147221485
Text installation problem: unable to load connector"
Also got a Error dialog box with message:
"Test 1 Method ~ of object ~ failed"
Please help.
Thanks.
So just wondering if somebody figured out the solution to this:
Invoke Error, Dispatch Exception: Object is static; operation not allowed
This simple line of code works from R but not when called from Matlab:
m < ar.ols(x,FALSE,1);
Otherwise the DCom connection works fine and server passes all the tests.
Comments appreciated.
Just thought somebody will find this useful, as it took me about 2 hours to figure it out.
The DCom interface doesnt work with the newest version of R (2.12.2). However, it works with version 2.9.2.
hi Daniel
i got the same problem,this is the solution(it seems working):
load your package in R before using Matlab
type evalR('library("bcp")') in Matlab and it should work
i got another problem,i got the following message:
Invoke Error, Dispatch Exception: La classe source de l’objet lié a été modifiée
In english:Invoke Error,Dispatch Exception,Source class from object has been modificated
if anyode could help,thanks a lot !
Hi,
I keep getting the "The remote procedure call failed." in Matlab R2009A with R.2.7.2. Added R_HOME and pointed the PATH to bin dir of R. The rscproxy.dll is also present in the bin directory. What is the solution for this?
Hi! Wonderful idea! I wish I have had that idea myself. Listen guys, Im having problems to run certain commands like the ones to get the coefficients of a regression inside matlab, eg.
evalR('test<lm(y~x)');
evalR('coef<as.matrix(test$coefficients)');
Coef=getRdata('coef');
it returns: ??? Error using ==> getRdata at 47
Could not get as.matrix(test).
Invoke Error, Dispatch Exception: Nicht initialisiertes Objekt
Any ideas?
Thanks a lot.
Daniel you should install the bcp library in R, not from Matlab. That is likely your problem. When you install a package in R you need to specify a mirror site and such. So go to R, enter
>install.packages("bcp")
Finish installing, and then you should be able to work in Matlab.
I' really looking forward to master this application! very useful!
I have a problem to execute some R commands. Although the demo is running properly, I get an error message when I try to execute the following commands:
status = openR;
evalR('install.packages("bcp")')
evalR('library("bcp")')
evalR('data("RealInt")')
evalR('n < length(RealInt)')
evalR('bcp.ri < bcp(as.vector(RealInt), p0 = 0.1)')
closeR;
If I run the same commands in R, it works, but Matlab gives me the following errors for every command after the second line:
Error using ==> evalR at 58
Problem evaluating command library("bcp").
Invoke Error, Dispatch Exception: L'objet est statique; l'opération n'est pas
autorisée
Any idea why or how can I fix it? Thank you.
I am using Matlab 7.8.0 (R2009b) and R version 2.9.0 in Windows XP and it does not work. I have tried all the recomendations above and nothing works, I get the message:
??? Error using ==> openR at 68
Cannot connect to R.
Error: The remote procedure call failed.
Thanks
Hi all,
is there a way to use Rlink on a unix server?
thanks
Reply to Martin Heroux:
You can change your code in this way, and it will work.
%%
status = openR;
% Running a simple KS test to determine whether two samples have the same distribution
a = rand (100,1); % creating a random signal
i = pi/100 :pi/100: pi;
b = (sin (i))' + a; % creating second signal
% Putting both signals into R
putRdata('a',a);
putRdata('b',b);
% Running ks.test in R and retrieving the output
evalR ('output < ks.test(a, b)')
getRdata ('output')
closeR;
Rproxy.dll is no longer installed by R2.9.2. Install the rscproxy package from CRAN. Copy C:\Program Files\R\R2.9.2\library\rscproxy\libs\rcsproxy.dll to C:\Program Files\R\R2.9.2\bin\Rproxy.dll, and it seems to work.
I want to launch R from MATLAB.
I have been using R2.7.0 and DCOM Server 2.5.0 successfully.
I want to upgrade R to 2.8.0 (and later 2.9.2) and I realize that I have to change the DCOM Server. I did the following:
1. Downloaded and installed R 2.8.0 from http://cran.rproject.org/bin/windows/base/old
2. Changed Window system path to point to R2.8.0/bin
3. Downloaded and installed R_Scilab_DCOM3.01B5.exe from http://cran.rproject.org/bin/windows/base (took all options)
4. Installed R package rscproxy_1.31.zip from http://cran.rproject.org/web/packages/rscproxy/index.html
I rebooted the computer and run statement openR in MATLAB, a Visual C++ Runtime error box appears, with error message:
Also, I ran the provide (D)COM Server test (Server 1 – Basic Test) from the Windows Start button. In the popped up Window “StatConnector Test”, I click “Start R”, and I got the Visual C++ Runtime error message:
Program: C:\...\Statco~1.exe abnormal program termination.
When error dialog box is OKed, the error “Initializing R .. Function call failed” appeared in the StatConnector Test window.
As a result to this, MATLAB failed to run openR, resulting in a similar Visual C++ Runtime error.
Thanks for help.
Patrick Tai.
How can i load R packages? I tried evalR('library(...)') but it doesn't seems to work.
i had a similar problem to sophie. I downloaded the package rscproxy to my R installation and the problem went away.
Overall, it seems like this will add a great deal of versatility to Matlab. Unfortunately, the documentation is very succinct and I am having difficulty getting even basic statistical tests to give me an output in Matlab.
% Running a simple KS test to determine whether two samples have the same distribution
a = rand (100,1); % creating a random signal
i = pi/100 :pi/100: pi;
b = (sin (i))' + a; % creating second signal
% Putting both signals into R
putRdata('a',a);
putRdata('b',b);
% Running ks.test in R and retrieving the output
evalR ('output < ks.test(x, y)')
getRdata ('output')
%%%%%
I can run this code in R and get the output from the statistical test. However, when I try to get the R data (getRdata), Matlab give me the following error message:
Error using ==> getRdata at 47 Could not get output.
Invoke Error, Dispatch Exception: There is no connection for this connection ID
Any suggestions on how to get the output into Matlab.
Cheers
I added R_HOME in the environment variables but still I have the following error:
??? Error: Object returned error code: 0x80040013
when the code is calling: R_lInK_hANdle.Init('R');
Hi!
I installed R (R2.9.0.exe) on my pc (windows), I installed Scilab DCOM interface. And I downloaded your Matlab Rlink and put the folder path where it is stored in the path of Matlab but I still get this error while using openR:
Problem connecting to R: Error using ==> actxserver at 91
Server creation failed. Invalid ProgID 'StatConnectorSrv.StatConnector'
Any idea what I miss? what I am doing wrong?
Thanks in advance for your help
It works at XP but when I tried to use at Vista, it did not work. Do I need extra step to make it work? Or openR is not for vista?
If your Rlink files (openR etc.) are in folder D:\R\Rlink, then add the following path to MATLAB:
D:\R\Rlink
How do you add a MATLAB path? To find out, enter command in MATLAB
>> doc path
Hi,
First of all i want to thank to all developer in such a tool. It seems very useful to me.
However, can you please help me about setting the R_HOME and PATH variables? I can not connect Matlab and R still.
Thanks.
Necati Sekkeli
Wonderful tool, I have been using it for almost a year, thank you.
Is there a way to call R (from MATLAB) so that R runs in the background?
R is called via a MATLAB UI command button. The R function may take a long time. When waiting, the MATLAB UI stops refreshing, which leads to ugly displays if the UI windows are moved around. I hope, by calling R in the background, this will be addressed.
Thank you.
Patrick Tai.
Very handy and lightweight set of functions. Thank you!
To answer some questions:
1) actxserver is a MATLAB function found only in Windows
2) make sure you install the R(D)COM interface, paying attention to the instructions about setting your R_HOME and PATH variables in the environment variables for your system. I received this same error, but once I restarted my machine and set the paths (and restarted MATLAB) it worked just fine.
This package looks brilliant, but I can not get it work, matlab always complain "Server creation failed. Invalid ProgID 'StatConnectorSrv.StatConnector'" although I have instaledl the R(D)COM interface. What is the problem?
A great idea! However did not work for me.
I tried it under unix and linux. The complain is that 'actxserver' is not found.
Am I blind for something obvious?
Is it only for Windowsusers?
A comment will be appreciated.
Great way to make use of some important R commands in MATLAB. Thanks a lot!
R_lInK_hANdle.SetSymbol does not work for me.
Could someone help?
Very helpful API for R. It saved me lots of work. Thank you.
I have the same problem. I can't read out "vocano" and the error message is "Invoke Error, Dispatch Exception". What's wrong with it? Thanks.
is there a way to make it work with MAC OS ?
Fantastic idea and potentially very useful.. Worked well initially, now having trouble (a) moving regression output (eg residual vector) back to Matlab correctly; (b) a simple correlation of 2 vectors in gives lots of 'ActiveX errors'...
excellent package. makes the hideously designed R usable by general engineers.
I can read the matrix "vocano" in R command window, but I can't read out "vocano" in using volcano = getRdata('volcano') in matlab; what's wrong with it ?
thanks
I just find this today !!!!I will use it before make some comment on it
The interface is very nice. I can call R from MATLAB and get the results very easily.
But how can I run a complete program code in R from Matlab?
I have several loops in my R code. Besides I don't want to type all my R code in every evalR instruction.
Thanks
I have the same problem.
"Cannot close R session. Error: The remote procedure call failed."
I use Matlab 6.5.0.180913a (R13), and RSrv250. Seems like it is a bug?
An excellent set of functions that works beautifully under 2000 & XP.
It is a great tool.
However, I got the following error message when using the closeR function:
"Cannot close R session. Error: The remote procedure call failed."
I use Matlab(R2006a), R(2.2.1), and RSrv250. Seems like it is a bug?
Excellent!
A very good tool for statisticians who want more than just the statistical toolbox of Matlab...
easy to install, add extreme power to matlab, especially when using models (regression etc.) mixing both qualitative and quantitative variables.
gave me a lot of power (huge statistical package) that can be easily used in Matlab
code.
Works great. Any way to get structures and data frames from R?
Easy to install!
works like a charm