2011-04-03 154 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