Я написал функцию Rcpp для вызова R, которая проверяет равенство.Он компилируется нормально, но кажется, что он возвращает только значения для первого элемента в векторе: mywhich(samplevector, samplevector[1])
возвращает значение, mywhich(samplevector, samplevector[2])
возвращает numeric(0)
.
Код функции приведен ниже, этонужно работать только на числовых и целочисленных векторах
#include <Rcpp.h>
using namespace Rcpp;
//[[Rcpp::export]]
SEXP mywhich(SEXP x, SEXP y) {
//For each supported type, turn it into the 'real' type and
//perform the operation. We can use TYPEOF to check the type.
switch(TYPEOF(x)){
case REALSXP: {
Environment base("package:base");
Function f("which");
NumericVector answer = f(as<NumericVector>(y) == as<NumericVector>(x));
return wrap(answer);
}
case INTSXP: {
Environment base("package:base");
Function f("which");
IntegerVector answer = f(as<IntegerVector>(y) == as<IntegerVector>(x));
return wrap(answer);
}
default: {
stop("Only integer and numeric vectors are supported");
}
}}
любая помощь будет оценена