2011-04-03 119 views
24

是否有将MATLAB代码转换为R的工具?将MATLAB代码转换为R

我有很多需要从MATLAB转换到R的代码。它不一定是准确的,但它将有助于提供一个良好的开端。

+0

对于简单的程序你可以尝试这个新的包:https://cran.r-project.org/package=matconv – vonjd 2018-02-05 16:29:00

回答

8

翻译代码的替代方法是使用RMatlab包从R内调用MATLAB。

我没有试过RMatlab,但包的说明指出:

这个软件包提供的方法来读取 和写入MAT文件。它还使得它可以在本地或在远程主机上进行通信(评估 代码,发送和检索对象等) 与Matlab v6或更高版本运行 。

+0

它只能在UNIX上运行:( – user236215 2011-04-29 16:05:04

+0

对于Windows,请参阅此答案:http://stackoverflow.com/questions/6695105/ call-r-scripts-in-matlab/6933492#6933492 – Iterator 2011-09-26 16:46:35

+1

@ user236215 R和RMatlab都在Windows上运行。 – 2011-09-26 16:56:54

14

保罗·吉尔伯特提供了可以让你在R mailing list开始(他声称它会转换的方式约80%)粗略Bash脚本:

#!/bin/csh 
cp $1 $2 
ex -s $2 <<eof 
    g/%/s//#/g 
    g/function\(..*\)=\(..*\)(\(..*\)/s//\2 <-function(\3 { \1/ 
    g/end/s// } #/ 
    g/for\(..*\)=\(..*\):\(..*\)/s//for (\1 in \2 : \3) {/ 
    g/_/s//./g 
    g/;/s///g 
    g/==/s//@@/g 
    g/=/s//<-/g 
    g/@@/s//==/g 
    g/zeros(/s//matrix(0,/g 
    g/ones(/s//matrix(1,/g 
    g/eye(/s//diag(1,/g 
    g/\/s//solve(,)/g 
    g/fsolve('\(..*\)'/s//ms(~\1 /g 
    g/param(\(..*\))/s//param[ \1 ] /g 
    g/var(\(..*\))/s//var[ \1 ] /g 
    g/mod1(\(..*\)/s//mod1[ \1 /g 
    wq 
eof