簡體   English   中英

R Rcpp 如何在 pow 中使用向量

[英]R Rcpp how to use a vector in pow

我想將帶有冪元素 (x^y) 的 R 代碼轉換為 Rcpp。 Rcpp 使用 pow(x,y) 但它似乎沒有被矢量化。 以下示例返回 NaN NaN。

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
NumericVector vecTest(NumericVector x) {
  
  return pow(x, 0.25);
}

/*** R
test <- c(-1.19556e+12, -1.24111e+12)
vecTest(test)
*/

我可以編寫一個 for 循環來遍歷 x 向量的元素,但我想知道是否缺少某些東西。

它有時有助於

  • 查看定義您要使用的 function 的 header 文件

  • 查看部署您要使用的 function 的一些單元測試

  • 保持你的例子簡單

  • 稍微改變 arguments

  • 確保從要點擊的命名空間中點擊 function

代碼

#include <Rcpp.h>

// [[Rcpp::export]]
Rcpp::NumericVector mypow(Rcpp::NumericVector x, double expo) {
    return Rcpp::pow(x, expo);
}

/*** R
v <- c(2, 3, 4, 1.2e12, -1.2e12)
mypow(v, 2)
mypow(v, 0.5)
*/

Output

> Rcpp::sourceCpp("~/git/stackoverflow/68852817/answer.cpp")

> v <- c(2,3,4)

> mypow(v, 2)
[1] 4.00e+00 9.00e+00 1.60e+01 1.44e+24 1.44e+24

> mypow(v, 0.5)
[1] 1.41421e+00 1.73205e+00 2.00000e+00 1.09545e+06         NaN
> 

似乎像宣傳的那樣工作。 標量求冪的矢量參數。

編輯:更新以在您的示例中顯示一些“大”值。 負實數的根不起作用,但這是一個數學問題,而不是編譯器、庫或 package 的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM