[英]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)
*/
> 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.