From DSL
#include <iostream>
#include "smile.h"
#include "smilearn.h"
using namespace std;
void PrintDataset(const DSL_dataset &d)
{
// The code below shows how to access crucial information form
// a data set.
int v,r;
cout << " ===================" << endl;
cout << " -- variable info --" << endl;
cout << "number of variables = " << d.NumVariables() << endl;
for (v=0;v<d.NumVariables();v++)
{
DSL_variableInfo vi;
d.GetVariableInfo(v,vi);
cout << " Variable " << v << endl;
cout << "\tid: " << vi.id << endl;
cout << "\t";
if (vi.useInt)
cout << "is discrete";
else
cout << "is continuous";
cout << endl;
cout << "\tMissing element value: ";
if (vi.useInt)
{
cout << vi.missingValue.i << endl;
cout << "\tState names: ";
for (unsigned s=0;s<vi.stateNames.size();s++)
cout << vi.stateNames[s] << " ";
cout << endl;
}
else
cout << vi.missingValue.f << endl;
}
cout << " -- data records --" << endl;
cout << "number of records = " << d.NumRecords() << endl;
for (r=0;r<d.NumRecords();r++)
{
for (v=0;v<d.NumVariables();v++)
{
if (d.IsMissing(v,r))
cout << "*";
else
{
if (d.IsDiscrete(v))
cout << d.At(v,r).i;
else
cout << d.At(v,r).f;
}
cout << "\t" ;
}
cout << endl;
}
cout << endl;
}
void SimpleTextParsing()
{
DSL_textParser parser;
parser.SetUseHeader(true);
parser.SetTypesSpecified(true);
if (parser.Parse("data.txt")!=DSL_OKAY)
cout << "Parsing failed!" << endl;
DSL_dataset d = parser.GetDataset();
PrintDataset(d);
}
int main()
{
SimpleTextParsing();
}
/*
------- data.txt -------
A B C D E
ordinal discrete ordinal discrete continuous
0 0 0 true 1.1
1 0 1 false 2.1
* * 0 true 0.1
1 1 1 * 3
------- -------- -------
===================
-- variable info --
number of variables = 5
Variable 0
id: Column_0
is continuous
Missing element value: -1.#IND
Variable 1
id: Column_1
is discrete
Missing element value: -1
State names: 0 1
Variable 2
id: Column_2
is continuous
Missing element value: -1.#IND
Variable 3
id: Column_3
is discrete
Missing element value: -1
State names: d1 d2
Variable 4
id: Column_4
is continuous
Missing element value: -1.#IND
-- data records --
number of records = 4
0 0 0 0 1.1
1 0 1 1 2.1
* * 0 0 0.1
1 1 1 * 3
*/