我有一些天真的问题要问:
1)当我想在R中调用C时,我必须编写一些C代码。但有时我必须调用自己用 R 编写的函数,我可以在 C 函数中调用该函数吗?
2)如果1)是可行的,那么如果我使用R编写的函数重复1000次循环,使用C调用这个函数进行循环会加快速度吗?
我有一些天真的问题要问:
1)当我想在R中调用C时,我必须编写一些C代码。但有时我必须调用自己用 R 编写的函数,我可以在 C 函数中调用该函数吗?
2)如果1)是可行的,那么如果我使用R编写的函数重复1000次循环,使用C调用这个函数进行循环会加快速度吗?
问得好。快速浏览:
是的你可以。使用 R 提供的基于 C 的 API 可能(和很多事情一样)有点乏味——但是(至少在我们看来)使用我们通过Rcpp放在顶部的 C++ 层要容易得多
这就是关键点。如果 R 代码是瓶颈,那么当您从 C 或 C++ 调用它时它仍然是瓶颈,因为从哪里调用它并不重要。重要的是它的相对速度。
rcpp-devel 列表(链接在Rcpp 页面)有很多相关的讨论;[rcpp]
您还可以在标签下的 SO 上找到很多内容。