是否可以在MATLAB程序中调用R脚本?我怎么能这样做?
答案 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代码,并使用JRI或RCaller从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]是您的输出文件。