我对 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