Я хочу реплицировать следующую функцию R в Rcpp
:
fR = function(x) x[1:2]
fR(c(1,2,3))
#[1] 1 2
fR(c('a','b','c'))
#[1] "a" "b"
Я могу сделать это для фиксированного типа вывода, например:
library(inline)
library(Rcpp)
fint = cxxfunction(signature(x = "SEXP"), '
List xin(x);
IntegerVector xout;
for (int i = 0; i < 2; ++i) xout.push_back(xin[i]);
return xout;', plugin = "Rcpp")
Но это будет работать только для целых чисел, и если я попытаюсь заменить тип xout
на List
(или GenericVector
, которые являются одинаковыми) - он работает с любым типом ввода, но я возвращаю a List
вместо вектора.
Каков правильный способ Rcpp
сделать это?