在Matlab中调用R脚本

时间:2011-07-14 14:44:57

标签: r matlab

是否可以在MATLAB程序中调用R脚本?我怎么能这样做?

7 个答案:

答案 0 :(得分:6)

您可以在批处理模式中使用R.如果R在您的路径中,那么您可以从MATLAB调用:

system('R CMD BATCH infile outfile');

将在infile中运行代码并将输出放在outfile中。

编辑: 您还可以使用R包[{3}}和R(D)COM服务器尝试另一种方法,描述为rscproxy

答案 1 :(得分:5)

使用R(D)COM和Matlab R-link一段时间之后,我不推荐它。 COM接口在解析许多命令时遇到问题,并且很难调试代码。我建议使用Matlab中的系统命令,如下所述 R Wiki

答案 2 :(得分:3)

system几乎肯定是要走的路,正如其他答案所述。为了完整起见,您还可以使用MATLAB的功能来运行Java代码,并使用JRIRCaller从Java调用R.同样,您可以使用MATLAB的功能来运行.NET代码和R.NET

答案 3 :(得分:2)

是。在Windows上,我通过Matlab R-link然后R(D)COM server on the R side完成了很多操作。

它可以很好地来回传递命令和数据。通过操作系统调用R是可行的,但是您必须对它们之间传递的数据进行解压缩(写入)和解析(加载)。这很乏味也没有乐趣。特别是如果你有很多数据。这也意味着你在R方面失去了状态,每次调用就像第一次一样。

在Linux或其他操作系统上,或者甚至更常用的用法,我现在尝试将Rstudio作为服务器 - 有关详细信息,请参阅http://www.rstudio.org/docs/server/getting_started

答案 4 :(得分:1)

另一种方式RWiki recommended

 CurrentDirectory=strrep(pwd,'\','/');
 eval(['!C:\R\R-3.0.1\bin/Rscript "' CurrentDirectory '/Commands.R"'])

答案 5 :(得分:0)

您可以使用unix命令在matlab中运行命令行函数。最简单的方法可能是设置一个R脚本,将结果输出到文本文件,使用unix命令在matlab中运行脚本,然后(在matlab中)验证文件是否存在并加载它。

答案 6 :(得分:0)

您可以使用system命令执行R脚本。如下所示:

[status] = system('R CMD BATCH [options] script.R [outfile]')

其中[options]是您发送给R解释器的选项,[outfile]是您的输出文件。