【问题标题】:Rcpp: Apply lfactorial to NumericVectorRcpp:将 lfactorial 应用于 NumericVector
【发布时间】:2015-05-04 23:38:08
【问题描述】:

在 Rcpp 中将lfactorial 函数应用于NumericVector 的最佳/最简单方法是什么。在 R 中我会有这样的东西:

> vec <- c(1,2,3,4)
> lfactorial(vec)
[1] 0.0000000 0.6931472 1.7917595 3.1780538

在 Rcpp 中,假设我有:

NumericVector vec = NumericVector::create(1,2,3,4);

Rcpp::internal::lfactorial 应用于vec 的每个元素的最佳方式是什么?

感谢您的帮助。

【问题讨论】:

    标签: r rcpp


    【解决方案1】:

    Rcpp,就像 R 一样,是矢量化的:

    R> cppFunction('NumericVector lfac(NumericVector x) { \
                                            return lfactorial(x); }')
    R> lfac(1:4)
    [1] 0.000000 0.693147 1.791759 3.178054
    R> 
    

    这是我为了更好地展示而简单地打破的一行代码。在复制和粘贴之前删除反斜杠。您可以将其写为NumericVectorIntegerVector 签名。

    【讨论】:

    • 你认为用 Rcpp 编写的 R 包被 CRAN 接受的几率更高吗?
    • 我不认为它起作用。当R CMD check 运行时,您的包需要没有警告、错误和注释,并且最好也是正确的。 发现使用Rcpp 更容易,而且似乎很多其他人也这样做——但CRANberries 就在今天展示了另一个包含C++ 但不使用Rcpp 的包。它甚至使用了.C() 实际上是不鼓励的......
    • 感谢您的反馈。我正在 Rstudio 中开发这个包,所以它可以帮助我提前发现警告和错误。这是包裹经常被拒的主要原因吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多