我正在尝试从RStudio调用Matlab中的一个非常简单的脚本。然而,每当我运行以下代码时,在没有任何错误的情况下,它都会返回0。你能告诉我如何在R中调用Matlab脚本并获得它们的输出吗?
run_matlab_script("C:/Users/XXX/Desktop/Sum.m", verbose = TRUE, desktop = FALSE, splash = FALSE,
display = TRUE, wait = TRUE, single_thread = FALSE)
注意,为了使用上述函数matlabr";此外,我在Matlab中的简单脚本包括以下代码:
b=1+2
提前感谢!
matlab::run_matlab_script
使用system
调用matlab。截至目前,该函数(当前提交为c01d310(看起来如下:
run_matlab_script = function(
fname,
verbose = TRUE,
desktop = FALSE,
splash = FALSE,
display = FALSE,
wait = TRUE,
single_thread = FALSE,
...){
stopifnot(file.exists(fname))
matcmd = get_matlab(
desktop = desktop,
splash = splash,
display = display,
wait = wait,
single_thread = single_thread)
cmd = paste0(' "', "try, run('", fname, "'); ",
"catch err, disp(err.message); ",
"exit(1); end; exit(0);", '"')
cmd = paste0(matcmd, cmd)
if (verbose) {
message("Command run is:")
message(cmd)
}
x <- system(cmd, wait = wait, ...)
return(x)
}
(对我来说(值得注意的是,run_matlab_script
在其形式中包括...
,并将其传递给system
事实上,它的帮助文档特别说明了它的作用:
#' @param ... Options passed to code{link{system}}
因此,我们可以尝试通过查看system
来捕获它的输出。来自?system
、
intern: a logical (not 'NA') which indicates whether to capture the
output of the command as an R character vector.
这表明如果您将呼叫改为
ret <- run_matlab_script("C:/Users/XXX/Desktop/Sum.m", verbose = TRUE, desktop = FALSE,
splash = FALSE, display = TRUE, wait = TRUE, single_thread = FALSE,
intern = TRUE)
您将在out
中获得它的输出。