Ejemplo n.º 1
0
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);
  }
}
Ejemplo n.º 2
0
    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) ;
        }
    }
Ejemplo n.º 3
0
    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] )) ;
        }
    }
Ejemplo n.º 4
0
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);

  }

}
Ejemplo n.º 5
0
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);

  }

}