全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
7485 5
2012-10-28
在Matlab中调用R
一直往返于Matlab与R之间进行编程,今天发现原来有办法直接用Matlab调用R,
具体如下:

Calling R from MatlabThis uses the COM interface, so only works on Windows.
Install R.2.7.0 or newer. Make sure R.exe is in your windows path.

Install and run the Rcom server

Reboot matlab and put the following m-files in your path

Optional: in R-2.7.0\bin make a file called "R.init" which contains startup commands, such as library(glasso)
In matlab, type Rdemo. This should display b = 1 4 9 16 25 36 49 64 81 100c = 2 5 10 17 26 37 50 65 82 101

You can also call R as a subprocess as follows !R --no-save # at the matlab promptq() # at the R prompt to quit.
Trouble shooting
If it's not working make sure the Dcom service is running under Control Panel --> Administrative Tools --> Services --> DCOM Server Process Launcher. You can start the service by right clicking and selecting 'start', (unless of course its already running) and have it always start on reboot by double clicking and changing the startup type to automatic.

The Rsvr install creates a bunch of shortcuts under the R program folder on the start bar. One of these, "server 01 Basic Test" will test the connection to R - if that works we know the problem is between Matlab and Dcom and also unlikely to be a firewall problem.
ExampleA matlab wrapper to the glasso function.function precMat = glassoR(C, rho, useMBapprox)% Use L1-linear regression to find markov blankets and then Lambda.% Uses R code from http://www-stat.stanford.edu/~tibs/glasso/openR;evalR('C<-1') % must pre-declare variable before writing a matrixevalR('L<-1') putRdata('C',C);putRdata('rho',rho);putRdata('useMBapprox', useMBapprox)evalR('stuff <- glasso(C,rho=rho,approx=useMBapprox)'); evalR('L <- stuff$wi') % inverse covariance matrixprecMat = getRdata('L');closeR;经过本人安装测试,发现运用开始菜单中R下的Dcom中的Server 01进行测试,无法通过,报错如下 Loading StatConnector Server... Done Initializing R...Function call failed Code: -2147221485 Text: installation problem: unable to load connector Releasing StatConnector Server...Done经查证,原来Dcom Server需要在系统的Path中能够找到rproxy.dll和R.dll两个文件,R.dll一般直接安装R时机有即有,而rproxy.dll在R2.7.0以后的版本中不再使用,变为rpcproxy.dll,而且需要手动安装
rpcproxy包才会有,安装rpcproxy包后,需要将rpcproxy.dll所在目录手动添加到系统path中,比如
我安装完后,rpcproxy.dll在C:\Program Files\R\R-2.9.0\library\rscproxy\libs中,如此步骤后,
再运行Server 01进行测试,点击StartR,一切Done!
http://hi.baidu.com/binaryfan/item/08a21b0947d30de2f45ba666
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-10-28 11:01:40
有作用,但还是有点不懂。。。谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-10-28 11:07:29
先收藏着,感谢。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-10-28 11:17:14
谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-10 16:01:48
安装rpcproxy包是什么意思呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-4-17 09:41:25
Install R.2.7.0 or newer. Make sure R.exe is in your windows path. (需要在系统盘下吗?)

Install and run the Rcom server

Reboot matlab and put the following m-files in your path (是指哪个path)

Optional: in R-2.7.0\bin make a file called "R.init" which contains startup commands, such as library(glasso)不理解这是什么意思?启动命令指什么?
rpcproxy包在R程序包中未找到。
望解答。新手,万分感谢。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群