非线性科学研究中心
 
Home | News | Research | People | Publications | Courses | NetworkScience | Conference | Workshop | Links | Softwares
   
 

 

FYI: Running R Scripts From Matlab

2018年04月16日 12:37 Web 点击:[]

Running R Scripts From Matlab


     

A direct way to run R from Matlab is to run the R code as an External Command using RScript.exe.


To run R scripts from Matlab, download the Matlab File Exchange file saveR and install the R package R.matlab.


Running R scripts has three steps:

  1. Pass data from Matlab to R using saveR.

  2. Execute an R script file (which saves the desired results using writeMat) in Matlab using !.

  3. Import the results in Matlab using load.


Using this method, four files are used:

  • Script.m - The Matlab script file that manipulates the data, saves the data in an R formatted file, calls the R script, and loads the results for further analysis.

  • Data.R - An R formatted data file saved by Matlab.

  • Commands.R - An R script file that loads the data, performs analysis, and saves the results in a Matlab formatted file.

  • Results.mat - A Matlab formatted data file saved by R.


Example Code

The following example performs a simple one-sample t test and passes the p-value and confidence interval back to Matlab. Atap fiberglass, Properti semarang, Gps tracking orang, Gps tracker mobil

Script.m

% Generate some random data

x=randn(1,10);

% Save the variable to an R formatted data file

saveR('Data.R','x')

% Get the current directory and switch slashes (R file pathes require '\')

CurrentDirectory=strrep(pwd,'\','/');

% Run script in R (note that the file path cannot contain any spaces), the paths could also be written out directly for each script

eval(['!C:/PROGRA~1/R/R-2.15.0/bin/Rscript ' CurrentDirectory '/Commands.R'])

% Load the results from R

load('Results.mat')

Commands.R

#Load required R.matlab package

library(R.matlab)

#Load data saved from Matlab

source('Data.R')

#Run one sample t test and save results

TTestResults<-t.test(x,mu=0,conf.level=0.95)

TTestP<-TTestResults$p.value

TTestCI<-TTestResults$conf.int

#Save results to Matlab data file

writeMat('Results.mat',TTestP=TTestP,TTestCI=TTestCI)


Other Information

An alternative is to use a COM interface (Install the COM Package with Matlab R-link) to call R directly from Matlab, however that method has difficulty parsing many commands, has difficulty dealing with NaN versus NA values, and is more complicated to set up properly.


R and Matlab have quite different data structures, so it can be difficult transferring complicated variables (especially      Matlab structures or R lists) back and forth. It is best to stick to passing basic variables (scalars, vectors, matrices, and cell arrays of strings).


The call library(R.matlab) can be loaded automatically each time R is launched by placing it in the Rprofile.site file.

 

上一条:推荐 | A Matlab suite of drivers to compute the PageRank vector for a directed graph. 下一条:FYI: Useful toolkit of convert matrix to net files.

关闭

  读取内容中,请等待...

版权所有:Research Centre of Nonlinear Science 邮政编码:430073
E-mail:liujie@wtu.edu.cn 备案序号: 鄂ICP备15000386号 鄂公网安备 42011102000704号