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.
Windows Only.
You will need a local installation of R and you will also need to install the R-(D)COM interface from http://lib.stat.cmu.edu/R/CRAN/other-software.html or other CRAN mirror site.
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:
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:
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.
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 <a href="http://rwiki.sciviews.org/doku.php?id=tips:callingr:matlab">R Wiki</a>. This also avoids having to install RAndFriends.
After installing both R (i386 2.12.2) and DCOM I ,I run Rdemo.ok!
for some reason I must call user-defined Rfunction with parameter called FindU.wRef .in my case:
After installing both R (i386 2.12.2) and DCOM I ,I run Rdemo.ok!
for some reason I must call user-defined Rfunction with parameter called FindU.wRef .in my case:
After installing both R (i386 2.15.0) and DCOM I was getting the following error at openR function:
??? Error using ==> openR at 68
Cannot connect to R.
Error: Object returned error code: 0x80040013
So I uninstalled the current DCOM and got another from:
http://rcom.univie.ac.at/download/current/statconnDCOM.latest.exe
Now Rdemo works smoothly! Thanks Robert Henson.
I have Matlab R2010a on Windows XP 32b sp3. And didn't do anything to path variables.
Cheers!
After installing both R (i386 2.15.0) and DCOM I was getting the following error at openR function:
??? Error using ==> openR at 68
Cannot connect to R.
Error: Object returned error code: 0x80040013
So I uninstalled the current DCOM and got another from:
http://rcom.univie.ac.at/download/current/statconnDCOM.latest.exe
Now Rdemo works smoothly! Thanks Robert Henson.
I have Matlab R2010a.
Cheers!
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:
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
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?
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 non-structure array.
I get the same error that Patrick reported on 2-25. 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.
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.3-1.zip
Installed StatconnDCOM1.3-2B7
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.
As now R version is 2.12.1, here is my solution.
for a clean install R, install package rscproxy (ver 1.3-1), and http://rcom.univie.ac.at/download/current/statconnDCOM.latest.exe (ver 3.1-2B7)
then Start->All Programs->statconn->DCOM->Server01 – Basic Test, to verify that everything is working.
now back to matlab (R2010b), run the following code
hr = actxserver('StatConnectorSrv.StatConnector');
hi = hr.invoke;
%fire up R
hr.Init('R');
% Push data into R
a = 1:10;
hr.SetSymbol('a',a);
% Run a simple R command
b = hr.Evaluate('a^2')
% Run a series of commands and grab the result
hr.EvaluateNoReturn('b <- a^2');
hr.EvaluateNoReturn('c <- b + 1');
c = hr.GetSymbol('c')
% Close the connection
hr.Close
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
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 just wrote up a "how to" on how to get this running, you can find it <a href="http://neurochannels.blogspot.com/2010/05/how-to-run-r-code-in-matlab.html">here</a>.
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
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
Reply to Martin Heroux:
You can change your code in this way, and it will work.
%%
status = openR;
% Running a simple K-S 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')
Rproxy.dll is no longer installed by R-2.9.2. Install the rscproxy package from CRAN. Copy C:\Program Files\R\R-2.9.2\library\rscproxy\libs\rcsproxy.dll to C:\Program Files\R\R-2.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.r-project.org/bin/windows/base/old
2. Changed Window system path to point to R-2.8.0/bin
3. Downloaded and installed R_Scilab_DCOM3.0-1B5.exe from http://cran.r-project.org/bin/windows/base (took all options)
4. Installed R package rscproxy_1.3-1.zip from http://cran.r-project.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++ Run-time 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.
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 K-S 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.
Hi!
I installed R (R2.9.0.exe) on my pc (windows), I installed Scilab DCOM interface. And I downloaded your Matlab R-link 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
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.
19 Sep 2008
xiaofeng dai
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?
01 Sep 2008
Maya Neytcheva
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 Windows-users?
A comment will be appreciated.
27 Aug 2008
Ankur P
Great way to make use of some important R commands in MATLAB. Thanks a lot!
24 Jul 2008
May Tan
R_lInK_hANdle.SetSymbol does not work for me.
Could someone help?
24 Jun 2008
Boris Danev
Very helpful API for R. It saved me lots of work. Thank you.
12 Jun 2008
shiun shiau
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.
11 Jun 2008
sb mmth
is there a way to make it work with MAC OS ?
04 Jun 2008
Bryan Grenfell
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'...
07 May 2008
firdaus janoos
excellent package. makes the hideously designed R usable by general engineers.
05 Apr 2008
zhang hui
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
03 Apr 2008
zhang hui
I just find this today !!!!I will use it before make some comment on it
24 Mar 2008
John Smith
13 Feb 2008
Lourdes Pelayo
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
02 Jan 2008
Klaus Maresch
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?
10 Jul 2007
e k
An excellent set of functions that works beautifully under 2000 & XP.
20 Jun 2007
Xuejian Xiong
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?
03 Jun 2007
qiao nan
Excellent!
21 Apr 2007
Kish AS
04 Apr 2006
David Dabin
A very good tool for statisticians who want more than just the statistical toolbox of Matlab...
22 Mar 2006
Pierre Lebrun
easy to install, add extreme power to matlab, especially when using models (regression etc.) mixing both qualitative and quantitative variables.
13 Mar 2006
Matlab User
gave me a lot of power (huge statistical package) that can be easily used in Matlab
code.
07 Dec 2005
Yuri K
Works great. Any way to get structures and data frames from R?