如何在 C 中执行 R 命令,而不使用 R 扩展,例如:
int main() {
system("R g<- graph(c(0,1,0,4,0,9,1,7,1,9,2,9,2,3,2,5,3,6,3,9,4,5,4,8,5,8,6,7,6,8,7,8),n=10,dir=FALSE)
plot(g)")
return(0)
}
您可以使用 system() 调用来运行 R,但是您不能像那样将 R 函数粘贴在命令行上。
您可以做的是将 R 代码写入文件并使用system("R CMD BATCH foo.R")
- 至少调用它:
main(){system("R CMD BATCH test.R");}
现在,默认情况下,R CMD BATCH 的输出图形会转到 PDF 文件,因此您需要打开图形窗口并暂停脚本以查看它。
当然,您的 test.R 文件可以在运行之前由您的 C 代码编写,您可以将其保存在临时目录或其他地方。
的替代方案R CMD BATCH
是Rscript
。我认为对于 C++ 和 R 没有紧密集成的问题,即使用 R 和 C++ 的不同阶段,以及大量或频繁的数据交换,使用系统调用可以非常简单和健壮。
另一种方法是同时运行 R 和 C++ 并在它们之间交换信息。这可以使用CRAN上提供的RInside pacakge来完成。