【问题标题】:Is it possible to use Alglib with Rcpp?是否可以将 Alglib 与 Rcpp 一起使用?
【发布时间】:2015-01-05 08:41:38
【问题描述】:

我经常使用 Rcpp 代码将 C++ 代码合并到 R 中。通过 BH 包,我还可以使用 Boost 库。但是,Boost 库缺少我想使用的函数(准确地说,它只有 Bessel 函数,但由于溢出,我想立即获取 Log-Bessel)。我知道Alglib确实有这个功能。

是否可以将 Alglib 与 Rcpp 一起使用,即以某种方式使用 Alglib 中的 log-bessel 函数?

【问题讨论】:

  • 问题“是否可能”显然是“是”,因为 Alglib 是 C++。我知道还没有一个包装器,所以除非你有特定的问题,否则如何做到这一点对于 SO 来说太宽泛了。是否需要这样做是另一个问题:R 的 Bessel 函数是否不行inside-r.org/r-doc/base/bessel? alglib Bessel 函数看起来非常相似 alglib.net/translator/man/manual.cpp.html#unit_bessel
  • 问题是如何在 Rcpp 中为 C++ 使用一些包对 SO 来说太宽泛了吗?在那种情况下,我很抱歉,但我真的不知道在哪里可以找到可以帮助我让 Alglib 库在 Rcpp 中工作的信息。 R 函数可以,但据我所知,我无法在基于 Rcpp 的 C++ 代码中使用 R 函数,因为这需要 Rcpp 的开发人员将此函数添加到 Rcpp。
  • 您当然可以(轻松)在 Rcpp 代码中调用任何 R 函数,但开销明显。
  • 我可以吗?我的印象是我只能从您的 C++ 中调用特定的“糖”函数,我认为这是因为 Quick Reference 和 Hadley's guide 似乎暗示了这一点。如何从 C++ 调用任意 R 函数?
  • 嗯,Rcpp 是为了用 C++ 代码扩展 R。为什么不直接创建一个与 Alglib 接口的包,或者只是继承一个 Bessel 函数?

标签: r rcpp alglib


【解决方案1】:

我看不出两者在功能上的明显区别

因此,我认为您可以使用 BH package 为您提供所有 Boost Math 以及一些其他内容。

最后但并非最不重要的是,R Core 成员写了一个package bessel on CRAN,专注于特殊功能,因此您也可以从那里开始。

【讨论】:

  • 谢谢!你是对的,我被错误地告知 AlgLib 包含一个 LogBessel 函数,这似乎是 openTURNS 。有点尴尬,我必须承认。我之前使用过 BH 包,但遇到了溢出问题,这就是为什么我想要一个允许 Log-Bessel 的包的原因。我也会研究 R 包。谢谢!
猜你喜欢
  • 2014-08-28
  • 2021-11-12
  • 2016-04-01
  • 2011-01-20
  • 2018-08-11
  • 2021-08-05
  • 2019-03-18
  • 2014-03-15
  • 2021-03-31
相关资源
最近更新 更多