从MatLab调用R脚本-错误
我想从从MatLab调用R脚本-错误,r,windows,matlab,cmd,R,Windows,Matlab,Cmd,我想从MatLab调用一个R脚本,比如myRfile.R。我使用的是带有Matlab2017a和R-3.4.2的Windows10机器。我使用上一篇文章中建议的system命令,解决方案是执行以下操作: 将路径添加到R的安装位置。就我而言,我写作 添加路径C:\Program Files\R\R-3.4.2\bin 确保R脚本位于工作目录(或路径)中 调用函数system('R CMD BATCH myRfile.R') 一、 但是,获取错误标志=1,并在命令窗口中打印以下内容: “R”未被识别
MatLab
调用一个R脚本,比如myRfile.R
。我使用的是带有Matlab2017a
和R-3.4.2
的Windows10
机器。我使用上一篇文章中建议的system
命令,解决方案是执行以下操作:
R
的安装位置。就我而言,我写作
添加路径C:\Program Files\R\R-3.4.2\bin
system('R CMD BATCH myRfile.R')
R.exe
,检查以确保可以从cmd运行R
。相反,如果我通过以下方式调用系统
:
系统(“'C:\Program Files\R\R-3.4.2\bin\x64\R.exe”CMD BATCH
myRfile.R')
然后正确执行脚本(无错误)。因此,我找到了解决问题的办法。一、 但是,您希望定义字符串
Rpath=“C:\Program Files\R\R-3.4.2\bin\x64\R.exe”
在我的程序开始时,运行命令
系统('Rpath CMD BATCH myRfile.R')
这将返回与以前类似的错误:
“Rpath”未被识别为内部或外部命令,
可操作的程序或批处理文件
问题:
system('R CMD BATCH myRfile.R')
对我不起作用R
的目录作为字符串写入,system
命令为什么会起作用,但如果我通过Rpath
将字符串传递给它,它就不起作用了基于@r2evans注释,解决方案是使用
setenv
而不是addpath
,因为system
使用系统路径搜索文件。程序
和文件
之间的空间对于系统
命令来说也是有问题的
样品溶液:
% Get the current set of system paths
path1 = getenv('PATH');
% Append directory for R to the system path
path1 = [path1'C:\PROGRA~1\R\R-34~1.2\bin\x64'];
% Update system path
setenv('PATH', path1)
% Run the system command.
system('R CMD BATCH myRfile.R');
通常,获取正确路径的一种方法是打开R
的实例并输入命令file.path(R.home())
。对我来说,这将返回“C:/PROGRA~1/R/R-34~1.2”。最后,追加
\bin\x64`
@excaza指出,定义R
路径的字符串应该被“
包围,以便cmd
正确解释空格。解决方案2:
path1 = getenv('PATH');
% Append directory for R to the system path
path1 = [path1'"C:\Program Files\R\R-3.4.2\bin\x64"'];
% Update system path
setenv('PATH', path1)
% Run the system command.
system('R CMD BATCH myRfile.R');
在字符串的中间放置<代码> RPATH 不传递任何我知道的编程语言中的字符串。使用
sprintf
生成system
的字符串参数。将R添加到系统路径时,是否重新启动了matlab?getenv('PATH')
是否包含R目录?(页面是否适合您?@excazasystem('sprintf(Rpath)CMD BATCH Rum_81_genB_VtoH.R'))
不起作用。它返回错误“sprintf”不可识别…您必须使用sprintf
将字符串参数设置为system
,而不是将其放入内部。同样,addpath
不会对您的系统路径执行任何操作,这正是system
所使用的。