で次の 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
、同じである)に置き換えようとすると、どの入力タイプでも機能しますlist
が、ベクトルではなく a が返されます。
これを行う正しいRcpp
方法は何ですか?