DataFrameSubsetVisitors::DataFrameSubsetVisitors(const Rcpp::DataFrame& data_) : data(data_), visitors(), visitor_names(vec_names_or_empty(data)) { for (int i = 0; i < data.size(); i++) { SubsetVectorVisitor* v = subset_visitor(data[i], visitor_names[i]); visitors.push_back(v); } }
DataFrameSubsetVisitors::DataFrameSubsetVisitors( const Rcpp::DataFrame& data_) : data(data_), visitors(), visitor_names(data.names()), nvisitors(visitor_names.size()) { for( int i=0; i<nvisitors; i++){ SubsetVectorVisitor* v = subset_visitor( data[i] ) ; visitors.push_back(v) ; } }
DataFrameSubsetVisitors::DataFrameSubsetVisitors( const Rcpp::DataFrame& data_, const Rcpp::CharacterVector& names ) : data(data_), visitors(), visitor_names(names), nvisitors(visitor_names.size()) { std::string name ; int n = names.size() ; IntegerVector indices = Language( "match", names, RCPP_GET_NAMES(data) ).fast_eval() ; for( int i=0; i<n; i++){ int pos = indices[i] ; if( pos == NA_INTEGER ){ name = (String)names[i] ; stop( "unknown column '%s' ", name ) ; } visitors.push_back(subset_visitor( data[pos-1] )) ; } }
DataFrameSubsetVisitors::DataFrameSubsetVisitors(const DataFrame& data_, const SymbolVector& names) : data(data_), visitors(), visitor_names(names) { CharacterVector data_names = vec_names_or_empty(data); IntegerVector indices = names.match_in_table(data_names); int n = indices.size(); for (int i = 0; i < n; i++) { int pos = indices[i]; if (pos == NA_INTEGER) { bad_col(names[i], "is unknown"); } SubsetVectorVisitor* v = subset_visitor(data[pos - 1], data_names[pos - 1]); visitors.push_back(v); } }
DataFrameSubsetVisitors::DataFrameSubsetVisitors(const DataFrame& data_, const IntegerVector& indices) : data(data_), visitors(), visitor_names() { CharacterVector data_names = vec_names_or_empty(data); int n = indices.size(); for (int i = 0; i < n; i++) { int pos = indices[i]; check_range_one_based(pos, data.size()); const SymbolString& name = data_names[pos - 1]; SubsetVectorVisitor* v = subset_visitor(data[pos - 1], name); visitors.push_back(v); visitor_names.push_back(name); } }