在下面的代码中,vectorTest函数的输出受到Tglobe中项目数量的限制。如上所述,输出是101。如果Tglobe = c(100,101),则输出为101,102。
我想做的是创建一个大小为speed的向量,并用相同的值填充它。换句话说,对于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++常数)在 - 我如何添加两个向量?你已经回答过了
- 我如何推广到一个输入向量(和返回矩阵)?留作练习。
#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/stackoverflow/68784602/answer.cpp")
> speed <- c(1,2,3,4,5)
> Tglobe <- 100
> vectorTest(Tglobe, speed)
[1] 101 102 103 104 105
>