0

如何在 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)
}
4

2 回答 2

4

您可以使用 system() 调用来运行 R,但是您不能像那样将 R 函数粘贴在命令行上。

您可以做的是将 R 代码写入文件并使用system("R CMD BATCH foo.R")- 至少调用它:

main(){system("R CMD BATCH test.R");}

现在,默认情况下,R CMD BATCH 的输出图形会转到 PDF 文件,因此您需要打开图形窗口并暂停脚本以查看它。

当然,您的 test.R 文件可以在运行之前由您的 C 代码编写,您可以将其保存在临时目录或其他地方。

于 2012-04-16T15:47:11.590 回答
2

的替代方案R CMD BATCHRscript。我认为对于 C++ 和 R 没有紧密集成的问题,即使用 R 和 C++ 的不同阶段,以及大量或频繁的数据交换,使用系统调用可以非常简单和健壮。

另一种方法是同时运行 R 和 C++ 并在它们之间交换信息。这可以使用CRAN上提供的RInside pacakge来完成。

于 2012-04-16T16:27:22.940 回答