You can include all utility functions through the main header
#include "geometries/utils/utils.hpp"
Or include the specific ones you need
#include "geometries/utils/columns/columns.hpp" #include "geometries/utils/lines/lines.hpp" #include "geometries/utils/lists/list.hpp" #include "geometries/utils/matrix/matrix.hpp" #include "geometries/utils/sexp/sexp.hpp" #include "geometries/utils/subset/subset.hpp" #include "geometries/utils/unique/unique_ids.hpp" #include "geometries/utils/vectors/vectors.hpp"
## id positions ## ## takes a sorted vector and returns the start & end indices of each unique element cppFunction( depends = 'geometries' , includes = '#include "geometries/utils/lines/lines.hpp"' , code = ' Rcpp::IntegerMatrix id_positions( SEXP x ) { return geometries::utils::id_positions( x ); } ' ) x <- c( rep(1, 5), rep(2, 10), rep(3, 6), rep(4, 2) ) id_positions( x ) # [,1] [,2] # [1,] 0 4 # [2,] 5 14 # [3,] 15 20 # [4,] 21 22
## Unique ## retains the original input order cppFunction( depends = "geometries" , includes = '#include "geometries/utils/unique/unique_sort.hpp"' , code = ' SEXP sorted_unique( SEXP x ) { return geometries::utils::get_sexp_unique( x ); } ' ) ## compare with cppFunction( code = ' Rcpp::NumericVector rcpp_unique( Rcpp::NumericVector x ) { return Rcpp::unique( x ); } ' ) x <- c(1,1,1,3,3,4,4,2) sorted_unique( x ) # [1] 1 3 4 2 rcpp_unique( x ) # [1] 2 3 4 1