将现有的C++代码移植到R

5
我希望您能将SpecialK Poker Hand evaluator移植到R。我认为使用Rcpp包应该相对容易,但我不知道从哪里开始。现有的教程似乎侧重于开发用于在R中使用的新C ++代码。在这种情况下,我有解决问题的C ++代码,我想尽可能轻松地在R中使用此代码。如果代码是一个自包含函数,我可以使用inline即时编译和链接它,但在这里不起作用。我想这个问题有两个部分:
  1. 我需要修改C++源代码才能与Rcpp兼容吗?
  2. 如果它不是一个小的、自包含的函数,我该如何从R中调用这段代码,而无法使用inline动态编译和链接?

我也可以使用Java、Python或Objective-C版本的评估器,但我认为这些版本与R的链接不会更容易。


我可以问一下您将代码从C++改为R的意图是什么吗? - Hauleth
@Hauleth 我想从R中调用C++代码。在这种情况下,我想使用R的统计函数进行一些基本的扑克研究,但我需要一个手牌评估器。目前没有R软件包可用于评估扑克手牌,因此这似乎是最佳选择。 - Zach
1个回答

5

你看过Rcpp吗?它使得将R和C++结合变得相对轻松。

许多包使用它将现有的C++代码引入R。你也可以查看这里在[rcpp]标签下的问题。该包、我的网站和其他地方都有相当丰富的文档。


嗨,Dirk:对于一个全新接触C++并想要移植一些现有代码的人来说,最好的教程在哪里? - Zach
这并不容易。要访问C++代码,您需要了解一些C++知识。但是我们有数十个使用内联的示例,您可以从中开始学习。或者查看现有的“相似”CRAN软件包,您可以尝试从中学习(链接到现有库时)。当然还有rcpp-devel列表及其档案。 - Dirk Eddelbuettel
谢谢。我希望有一个简单的解决方案,但我怀疑没有。 - Zach
这取决于你对“容易”的定义。与没有Rcpp所需做的相比:真的很容易。它是自动的吗?不是的。你能不看文档就完成吗?不行。CRAN上有40多个使用Rcpp的包。选择一个或两个使用外部库的包,看看它们是如何实现的。阅读我们的文档。在rcpp-devel上提问。 - Dirk Eddelbuettel
@Dirk 你好,你建议使用哪个R包来查看将现有的C++库移植到R的源代码?我是指在简单性方面。这很令人兴奋! - Suman Khanal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接