我对 Rcpp 编程很陌生,所以我正在尝试新事物以了解一切如何运作。
我写了一个小程序来比较两个 NumericVectors 和 match() 函数。我还想打印出输入 vector 和输出,但它似乎不起作用,因为我没有得到 vector 的条目而是存储位置(或类似的东西)。
我还没有为 NumericVectors 找到任何类型的“打印”功能,但也许还有另一种方法?任何帮助将不胜感激。

这是我的代码:

#include <Rcpp.h>
using namespace Rcpp;
using namespace std;
// [[Rcpp::export]]
IntegerVector vergl(NumericVector eins, NumericVector zwei){
 IntegerVector out = match(eins, zwei);
 cout << eins << endl;
 cout << zwei << endl;
 cout << match(eins, zwei) << endl;
 return out;
 }

一个小例子:
vergl(c(1,2,3),c(2,3,4))

输出:
> vergl(c(1,2,3),c(2,3,4))
0xa1923c0
0xa192408
0xb6d7038
[1] NA  1  2

谢谢你。

最佳答案

阅读 gallery.rcpp.org/articles/using-rcout

#include <RcppArmadillo.h>

// [[Rcpp::depends(RcppArmadillo)]]

using namespace Rcpp;

// [[Rcpp::export]]
IntegerVector vergl(NumericVector eins, NumericVector zwei){
 IntegerVector out = match(eins, zwei);
 Rcout << as<arma::rowvec>(eins) << std::endl;
 Rcout << as<arma::rowvec>(zwei) << std::endl;
 Rcout << as<arma::rowvec>(out) << std::endl;
 return out;
}

在 R 中:
vergl(c(1,2,3),c(2,3,4))
#   1.0000   2.0000   3.0000
#
#   2.0000   3.0000   4.0000
#
#      nan   1.0000   2.0000
#
#[1] NA  1  2

10-07 12:54