bpp-core3
3.0.0
|
This class corresponds to a 'dataset', i.e. a table with data by rows and variable by columns. More...
#include <Bpp/Numeric/DataTable.h>
Public Member Functions | |
DataTable (size_t nRow, size_t nCol) | |
Build a new void DataTable object with nRow rows and nCol columns. More... | |
DataTable (size_t nRow, const std::vector< std::string > &colNames) | |
Build a new void DataTable object with nRow rows and named columns. More... | |
DataTable (size_t nCol) | |
Build a new void DataTable object with nCol columns. More... | |
DataTable (const std::vector< std::string > &colNames) | |
Build a new void DataTable object with named columns. More... | |
DataTable (const DataTable &table) | |
DataTable & | operator= (const DataTable &table) |
DataTable * | clone () const |
Create a copy of this object and send a pointer to it. More... | |
virtual | ~DataTable () |
std::string & | operator() (size_t rowIndex, size_t colIndex) |
const std::string & | operator() (size_t rowIndex, size_t colIndex) const |
std::string & | operator() (const std::string &rowName, const std::string &colName) |
const std::string & | operator() (const std::string &rowName, const std::string &colName) const |
std::string & | operator() (const std::string &rowName, size_t colIndex) |
const std::string & | operator() (const std::string &rowName, size_t colIndex) const |
std::string & | operator() (size_t rowIndex, const std::string &colName) |
const std::string & | operator() (size_t rowIndex, const std::string &colName) const |
Work on columns. | |
size_t | getNumberOfColumns () const |
void | setColumnNames (const std::vector< std::string > &colNames) |
Set the column names of this table. More... | |
std::vector< std::string > | getColumnNames () const |
Get the column names of this table. More... | |
std::string | getColumnName (size_t index) const |
Get a given column name. More... | |
bool | hasColumnNames () const |
std::vector< std::string > & | getColumn (size_t index) |
const std::vector< std::string > & | getColumn (size_t index) const |
std::vector< std::string > & | getColumn (const std::string &colName) |
const std::vector< std::string > & | getColumn (const std::string &colName) const |
bool | hasColumn (const std::string &colName) const |
Tell is a given column exists. More... | |
void | deleteColumn (size_t index) |
Delete the given column. More... | |
void | deleteColumn (const std::string &colName) |
Delete the given column. More... | |
void | addColumn (const std::vector< std::string > &newColumn) |
Add a new column. More... | |
void | addColumn (const std::string &colName, const std::vector< std::string > &newColumn) |
Add a new column. More... | |
Work on rows. | |
size_t | getNumberOfRows () const |
void | setRowNames (const std::vector< std::string > &rowNames) |
Set the row names of this table. More... | |
void | setRowName (size_t rowIndex, const std::string &rowName) |
Set the row name of a row with a given index. More... | |
std::vector< std::string > | getRowNames () const |
Get the row names of this table. More... | |
bool | hasRow (const std::string &rowName) const |
Tell is a given row exists. More... | |
std::string | getRowName (size_t index) const |
Get a given row name. More... | |
bool | hasRowNames () const |
std::vector< std::string > | getRow (size_t index) const |
std::vector< std::string > | getRow (const std::string &rowName) const |
void | deleteRow (size_t index) |
Delete the given row. More... | |
void | deleteRow (const std::string &rowName) |
Delete the given row. More... | |
void | addRow (const std::vector< std::string > &newRow) |
Add a new row. More... | |
void | addRow (const std::string &rowName, const std::vector< std::string > &newRow) |
Add a new row. More... | |
void | setRow (const size_t rowIndex, const std::vector< std::string > &newRow) |
Sets an existing with a given index. More... | |
Static Public Member Functions | |
static std::unique_ptr< DataTable > | read (std::istream &in, const std::string &sep="\, bool header=true, int rowNames=-1) |
Read a table form a stream in CSV-like format. More... | |
static void | write (const DataTable &data, std::ostream &out, const std::string &sep="\, bool alignHeaders=false) |
Write a DataTable object to stream in CVS-like format. More... | |
static void | write (const DataTable &data, bpp::OutputStream &out, const std::string &sep="\, bool alignHeaders=false) |
Protected Attributes | |
size_t | nRow_ |
size_t | nCol_ |
std::vector< std::vector< std::string > > | data_ |
std::vector< std::string > | rowNames_ |
std::vector< std::string > | colNames_ |
This class corresponds to a 'dataset', i.e. a table with data by rows and variable by columns.
Data are stored as string objects, by column. A DataTable object is hence similar to a ColMatrix<string>.object. (NB: actually, ColMatrix does not exist yet...)
Definition at line 29 of file DataTable.h.
DataTable::DataTable | ( | size_t | nRow, |
size_t | nCol | ||
) |
DataTable::DataTable | ( | size_t | nRow, |
const std::vector< std::string > & | colNames | ||
) |
Build a new void DataTable object with nRow rows and named columns.
nRow | The number of rows of the DataTable. |
colNames | The names of the columns of the DataTable. |
DuplicatedTableColumnNameException | If colnames contains identical names. |
Definition at line 39 of file DataTable.cpp.
References data_, nCol_, and setColumnNames().
DataTable::DataTable | ( | size_t | nCol | ) |
Build a new void DataTable object with nCol columns.
nCol | The number of columns of the DataTable. |
Definition at line 31 of file DataTable.cpp.
DataTable::DataTable | ( | const std::vector< std::string > & | colNames | ) |
Build a new void DataTable object with named columns.
colNames | The names of the columns of the DataTable. |
DuplicatedTableColumnNameException | If colnames contains identical names. |
Definition at line 54 of file DataTable.cpp.
References setColumnNames().
DataTable::DataTable | ( | const DataTable & | table | ) |
Definition at line 65 of file DataTable.cpp.
|
virtual |
Definition at line 92 of file DataTable.cpp.
Referenced by clone().
void DataTable::addColumn | ( | const std::vector< std::string > & | newColumn | ) |
Add a new column.
newColumn | The new column values. |
DimensionException | If the number of values does not match the number of rows. |
TableColumnNamesException | If the table has row names. |
Definition at line 392 of file DataTable.cpp.
References colNames_, data_, nCol_, and nRow_.
Referenced by hasColumnNames().
void DataTable::addColumn | ( | const std::string & | colName, |
const std::vector< std::string > & | newColumn | ||
) |
Add a new column.
colName | The name of the column. |
newColumn | The new column values. |
DimensionException | If the number of values does not match the number of rows. |
NoTableColumnNamesException | If the table does not have row names. |
DuplicatedTableColumnNameException | If colName is already used. |
Definition at line 402 of file DataTable.cpp.
void DataTable::addRow | ( | const std::vector< std::string > & | newRow | ) |
Add a new row.
newRow | The new row values. |
DimensionException | If the number of values does not match the number of columns. |
TableRowNamesException | If the table has column names. |
Definition at line 503 of file DataTable.cpp.
References data_, nCol_, nRow_, and rowNames_.
Referenced by hasRowNames(), and read().
void DataTable::addRow | ( | const std::string & | rowName, |
const std::vector< std::string > & | newRow | ||
) |
Add a new row.
rowName | The name of the row. |
newRow | The new row values. |
DimensionException | If the number of values does not match the number of columns. |
NoTableRowNamesException | If the table does not have column names. |
DuplicatedTableRowNameException | If rowName is already used. |
Definition at line 529 of file DataTable.cpp.
|
inlinevirtual |
Create a copy of this object and send a pointer to it.
Implements bpp::Clonable.
Definition at line 75 of file DataTable.h.
References DataTable(), operator()(), and ~DataTable().
void DataTable::deleteColumn | ( | size_t | index | ) |
Delete the given column.
index | The index of the column. |
IndexOutOfBoundsException | If index is >= number of columns. |
Definition at line 365 of file DataTable.cpp.
References colNames_, data_, and nCol_.
Referenced by hasColumnNames(), and read().
void DataTable::deleteColumn | ( | const std::string & | colName | ) |
Delete the given column.
colName | The name of the column. |
NoTableColumnNamesException | If no column names are associated to this table. |
TableColumnNameNotFoundException | If colName do not match existing column names. |
Definition at line 375 of file DataTable.cpp.
References colNames_, data_, nCol_, and bpp::VectorTools::which().
void DataTable::deleteRow | ( | size_t | index | ) |
Delete the given row.
index | The index of the row. |
IndexOutOfBoundsException | If index is >= number of row. |
Definition at line 468 of file DataTable.cpp.
References data_, nCol_, nRow_, and rowNames_.
Referenced by hasRowNames().
void DataTable::deleteRow | ( | const std::string & | rowName | ) |
Delete the given row.
rowName | The name of the row. |
NoTableRowNamesException | If no row names are associated to this table. |
TableRowNameNotFoundException | If rowName do not match existing column names. |
Definition at line 482 of file DataTable.cpp.
References data_, nCol_, nRow_, rowNames_, and bpp::VectorTools::which().
vector< string > & DataTable::getColumn | ( | size_t | index | ) |
index | The index of the column. |
IndexOutOfBoundsException | If index is >= number of columns. |
Definition at line 309 of file DataTable.cpp.
Referenced by hasColumnNames(), and read().
const vector< string > & DataTable::getColumn | ( | size_t | index | ) | const |
index | The index of the column. |
IndexOutOfBoundsException | If index is >= number of columns. |
Definition at line 316 of file DataTable.cpp.
vector< string > & DataTable::getColumn | ( | const std::string & | colName | ) |
colName | The name of the column. |
NoTableColumnNamesException | If no column names are associated to this table. |
TableColumnNameNotFoundException | If colName do not match existing column names. |
Definition at line 323 of file DataTable.cpp.
References colNames_, data_, and bpp::VectorTools::which().
const vector< string > & DataTable::getColumn | ( | const std::string & | colName | ) | const |
colName | The name of the column. |
NoTableColumnNamesException | If no column names are associated to this table. |
TableColumnNameNotFoundException | If colName do not match existing column names. |
Definition at line 338 of file DataTable.cpp.
References colNames_, data_, and bpp::VectorTools::which().
string DataTable::getColumnName | ( | size_t | index | ) | const |
Get a given column name.
index | The index of the column. |
NoTableColumnNamesException | If no column names are associated to this table. |
IndexOutOfBoundsException | If index is >= number of columns. |
Definition at line 296 of file DataTable.cpp.
References colNames_, and nCol_.
Referenced by getNumberOfColumns().
vector< string > DataTable::getColumnNames | ( | ) | const |
Get the column names of this table.
NoTableColumnNamesException | If no column names are associated to this table. |
Definition at line 289 of file DataTable.cpp.
References colNames_.
Referenced by getNumberOfColumns(), and write().
|
inline |
Definition at line 165 of file DataTable.h.
References getColumnName(), getColumnNames(), nCol_, and setColumnNames().
Referenced by write().
|
inline |
Definition at line 279 of file DataTable.h.
References getRowName(), getRowNames(), hasRow(), nRow_, setRowName(), and setRowNames().
Referenced by write().
vector< string > DataTable::getRow | ( | size_t | index | ) | const |
index | The index of the row. |
IndexOutOfBoundsException | If index is >= number of rows. |
Definition at line 424 of file DataTable.cpp.
References data_, nCol_, and nRow_.
Referenced by hasRowNames().
vector< string > DataTable::getRow | ( | const std::string & | rowName | ) | const |
rowName | The name of the row. |
NoTableRowNamesException | If no row names are associated to this table. |
TableRowNameNotFoundException | If rowName do not match existing row names. |
Definition at line 436 of file DataTable.cpp.
References data_, nCol_, rowNames_, and bpp::VectorTools::which().
string DataTable::getRowName | ( | size_t | index | ) | const |
Get a given row name.
index | The index of the row. |
NoTableRowNamesException | If no row names are associated to this table. |
IndexOutOfBoundsException | If index is >= number of rows. |
Definition at line 266 of file DataTable.cpp.
References nRow_, and rowNames_.
Referenced by getNumberOfRows(), and write().
vector< string > DataTable::getRowNames | ( | ) | const |
Get the row names of this table.
NoTableRowNamesException | If no row names are associated to this table. |
Definition at line 259 of file DataTable.cpp.
References rowNames_.
Referenced by getNumberOfRows().
bool DataTable::hasColumn | ( | const std::string & | colName | ) | const |
Tell is a given column exists.
colName | The name of the column to look for. |
Definition at line 353 of file DataTable.cpp.
References colNames_.
Referenced by hasColumnNames().
|
inline |
Definition at line 195 of file DataTable.h.
References addColumn(), deleteColumn(), getColumn(), and hasColumn().
Referenced by write().
bool DataTable::hasRow | ( | const std::string & | rowName | ) | const |
Tell is a given row exists.
rowName | The name of the row to look for. |
Definition at line 456 of file DataTable.cpp.
References rowNames_.
Referenced by getNumberOfRows().
|
inline |
Definition at line 330 of file DataTable.h.
References addRow(), deleteRow(), getRow(), read(), setRow(), and write().
string & DataTable::operator() | ( | size_t | rowIndex, |
size_t | colIndex | ||
) |
rowIndex | Row number. |
colIndex | Column number. |
IndexOutOfBoundsException | If one of the index is greater or equal to the corresponding number of columns/rows. |
Definition at line 99 of file DataTable.cpp.
Referenced by clone().
const string & DataTable::operator() | ( | size_t | rowIndex, |
size_t | colIndex | ||
) | const |
rowIndex | Row number. |
colIndex | Column number. |
IndexOutOfBoundsException | If one of the index is greater or equal to the corresponding number of columns/rows. |
Definition at line 108 of file DataTable.cpp.
string & DataTable::operator() | ( | const std::string & | rowName, |
const std::string & | colName | ||
) |
rowName | Row name. |
colName | Column name. |
NoTableRowNamesException | If the table does not have names associated to rows. |
NoTableColumnNamesException | If the table does not have names associated to columns. |
TableNameNotFoundException | If one of rowName or colName do not match existing names. |
Definition at line 119 of file DataTable.cpp.
References colNames_, bpp::ElementNotFoundException< T >::getElement(), rowNames_, and bpp::VectorTools::which().
const string & DataTable::operator() | ( | const std::string & | rowName, |
const std::string & | colName | ||
) | const |
rowName | Row name. |
colName | Column name. |
NoTableRowNamesException | If the table does not have names associated to rows. |
NoTableColumnNamesException | If the table does not have names associated to columns. |
TableNameNotFoundException | If one of rowName or colName do not match existing names. |
Definition at line 137 of file DataTable.cpp.
References colNames_, bpp::ElementNotFoundException< T >::getElement(), rowNames_, and bpp::VectorTools::which().
string & DataTable::operator() | ( | const std::string & | rowName, |
size_t | colIndex | ||
) |
rowName | Row name. |
colIndex | Column number. |
NoTableRowNamesException | If the table does not have names associated to rows. |
IndexOutOfBoundsException | If the index is greater or equal to the number of columns. |
TableNameNotFoundException | If rowName do not match existing names. |
Definition at line 157 of file DataTable.cpp.
References bpp::ElementNotFoundException< T >::getElement(), nCol_, rowNames_, and bpp::VectorTools::which().
const string & DataTable::operator() | ( | const std::string & | rowName, |
size_t | colIndex | ||
) | const |
rowName | Row name. |
colIndex | Column number. |
NoTableRowNamesException | If the table does not have names associated to rows. |
IndexOutOfBoundsException | If the index is greater or equal to the number of columns. |
TableNameNotFoundException | If rowName do not match existing names. |
Definition at line 174 of file DataTable.cpp.
References bpp::ElementNotFoundException< T >::getElement(), nCol_, rowNames_, and bpp::VectorTools::which().
string & DataTable::operator() | ( | size_t | rowIndex, |
const std::string & | colName | ||
) |
rowIndex | Row number. |
colName | Column name. |
IndexOutOfBoundsException | If the index is greater or equal to the number of rows. |
NoTableColumnNamesException | If the table does not have names associated to columns. |
TableNameNotFoundException | If colName do not match existing names. |
Definition at line 193 of file DataTable.cpp.
References colNames_, data_, bpp::ElementNotFoundException< T >::getElement(), and bpp::VectorTools::which().
const string & DataTable::operator() | ( | size_t | rowIndex, |
const std::string & | colName | ||
) | const |
rowIndex | Row number. |
colName | Column name. |
IndexOutOfBoundsException | If the index is greater or equal to the number of rows. |
NoTableColumnNamesException | If the table does not have names associated to columns. |
TableNameNotFoundException | If colName do not match existing names. |
Definition at line 210 of file DataTable.cpp.
References colNames_, data_, bpp::ElementNotFoundException< T >::getElement(), and bpp::VectorTools::which().
|
static |
Read a table form a stream in CSV-like format.
The number of rows is given by the second line in the file. By default, if the first line as one column less than the second one, the first line is taken as column names, and the first column as row names. Otherwise, no column names and no row names are specified, unless explicitely precised by the user.
in | The input stream. |
sep | The column delimiter. |
header | Tell if the first line must be used as column names, otherwise use default. |
rowNames | Use a column as rowNames. If positive, use the specified column to compute rownames, otherwise use default; |
Definition at line 554 of file DataTable.cpp.
References addRow(), deleteColumn(), getColumn(), bpp::FileTools::getNextLine(), bpp::StringTokenizer::getTokens(), hasRowNames(), bpp::TextTools::isEmpty(), setColumnNames(), and setRowNames().
Referenced by hasRowNames().
void DataTable::setColumnNames | ( | const std::vector< std::string > & | colNames | ) |
Set the column names of this table.
colNames | The row names. |
DimensionException | If the number of names do not match the number of columns in the table. |
DuplicatedTableColumnNameException | If names are not unique. |
Definition at line 277 of file DataTable.cpp.
References colNames_, bpp::VectorTools::isUnique(), and nCol_.
Referenced by DataTable(), getNumberOfColumns(), and read().
void DataTable::setRow | ( | const size_t | rowIndex, |
const std::vector< std::string > & | newRow | ||
) |
Sets an existing with a given index.
rowIndex | The index of the row. |
newRow | The new row values. |
Definition at line 516 of file DataTable.cpp.
References data_, nCol_, and nRow_.
Referenced by hasRowNames().
void DataTable::setRowName | ( | size_t | rowIndex, |
const std::string & | rowName | ||
) |
Set the row name of a row with a given index.
rowIndex | the index of the row |
rowName | The row name. |
DimensionException | If the index does not match. |
DuplicatedTableRowNameException | If name is already given. |
Definition at line 245 of file DataTable.cpp.
References bpp::VectorTools::contains(), nRow_, and rowNames_.
Referenced by getNumberOfRows().
void DataTable::setRowNames | ( | const std::vector< std::string > & | rowNames | ) |
Set the row names of this table.
rowNames | The row names. |
DimensionException | If the number of names do not match the number of rows in the table. |
DuplicatedTableRowNameException | If names are not unique. |
Definition at line 231 of file DataTable.cpp.
References bpp::VectorTools::isUnique(), nRow_, and rowNames_.
Referenced by getNumberOfRows(), and read().
|
static |
Write a DataTable object to stream in CVS-like format.
data | The table to write. |
out | The output stream. |
sep | The column delimiter. |
alignHeaders | If true, add a delimiter before the first column header if there is row names. |
Definition at line 624 of file DataTable.cpp.
References getColumnNames(), getNumberOfColumns(), getNumberOfRows(), getRowName(), hasColumnNames(), and hasRowNames().
Referenced by hasRowNames().
|
static |
Definition at line 655 of file DataTable.cpp.
References bpp::OutputStream::endLine(), getColumnNames(), getNumberOfColumns(), getNumberOfRows(), getRowName(), hasColumnNames(), and hasRowNames().
|
protected |
Definition at line 36 of file DataTable.h.
Referenced by addColumn(), DataTable(), deleteColumn(), getColumn(), getColumnName(), getColumnNames(), hasColumn(), operator()(), operator=(), and setColumnNames().
|
protected |
Definition at line 34 of file DataTable.h.
Referenced by addColumn(), addRow(), DataTable(), deleteColumn(), deleteRow(), getColumn(), getRow(), operator()(), operator=(), and setRow().
|
protected |
Definition at line 33 of file DataTable.h.
Referenced by addColumn(), addRow(), DataTable(), deleteColumn(), deleteRow(), getColumn(), getColumnName(), getNumberOfColumns(), getRow(), operator()(), operator=(), setColumnNames(), and setRow().
|
protected |
Definition at line 33 of file DataTable.h.
Referenced by addColumn(), addRow(), deleteRow(), getNumberOfRows(), getRow(), getRowName(), operator=(), setRow(), setRowName(), and setRowNames().
|
protected |
Definition at line 35 of file DataTable.h.
Referenced by addRow(), DataTable(), deleteRow(), getRow(), getRowName(), getRowNames(), hasRow(), operator()(), operator=(), setRowName(), and setRowNames().