Rcpp如何在每个单元格中给出给定长度的相同值的向量

Rcpp how to give vector of a given length identical values in each cell

在下面的代码中,vectorTest 函数的输出受 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)
*/

你的问题措辞有点奇怪。所以我把它读成

  • 如何用给定的标量实例化一个向量?你已经回答了,尽管在[中粘贴了错误的值(NAN,甚至不是 C++ 常量) =27=]
  • 我如何添加两个向量? 你也已经回答了
  • 如何泛化到输入向量(和 return 矩阵)? 留作练习。

代码

#include <Rcpp.h>

// [[Rcpp::export]]
Rcpp::NumericVector vectorTest(double globe, Rcpp::NumericVector speed) {
    Rcpp::NumericVector globevec(speed.size(), globe);
    return globevec + speed;
}

/*** R
speed <- c(1,2,3,4,5)
Tglobe <- 100
vectorTest(Tglobe, speed)
*/

输出

> Rcpp::sourceCpp("~/git/Whosebug/68784602/answer.cpp")

> speed <- c(1,2,3,4,5)

> Tglobe <- 100

> vectorTest(Tglobe, speed)
[1] 101 102 103 104 105
>