在Matlab中获取从R调用的脚本的输出



我正在尝试从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中获得它的输出。

相关内容

  • 没有找到相关文章

最新更新