r - 获取从 R 调用的 Matlab 中脚本的输出
问题描述
我正在尝试从 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)
请注意,要使用上述功能,我在 r 中使用“ 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
。
推荐阅读
- c# - 应用程序属性设置缓存在哪里?
- c - C - 汇编错误:无法转换为指针类型
- c# - 使用 IronPdf 将带有图表的 HTML 转换为 PDF
- python - ValueError:未知层:尝试在 keras 中加载模型时的名称
- c++ - C++ chrono 库的限制?
- azure - 在 Azure YAML 管道中实现 Gates
- javascript - 未捕获的类型错误:无法在 fullcalendar.js:4368 上设置未定义的属性“el”
- django - django export to csv 仅从当前页面导出数据
- python - 如何从不同的文件导入具有 Python 中所有函数的类?
- shopify - Shopify:从 checkoutLineItemsReplace Mutation 获取 userErrors