【发布时间】:2021-10-17 10:17:58
【问题描述】:
在下面的代码中,vectorTest 函数的 out 受限于 Tglobe 中的项目数。如所写,输出为 101。如果 Tglobe = c(100, 101),则输出为 101, 102。
我想要做的是创建一个具有速度大小的向量并用相同的值填充它。换句话说,对于Tglobe <- 100,我希望输出为 101、102、103、104、105
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
Rcpp::NumericVector vectorTest(Rcpp::NumericVector Tglobe, Rcpp::NumericVector speed) {
Rcpp::NumericVector test(speed.size(), NAN);
test = Tglobe + speed;
return(test);
}
/*** R
speed <- c(1,2,3,4,5)
Tglobe <- 100
vectorTest(Tglobe, speed)
*/
【问题讨论】:
-
在函数的 arg 中将 "Rcpp::NumericVector Tglobe" 更改为 "double const& Tglobe" 是否满意?这样 cpp 就知道你想添加一个带向量的双精度数
-
发现并基本上是我在下面的答案中所做的。但是您还需要将
Tglobe粘贴到要分配的 ctor 中,并且由于 C++ 不会“回收”(在 R 意义上)或“广播”,因此您需要确保尺寸匹配。