正在处理加载 table 数据

Processing loading table data

我有一个文本文件 "celldata.txt",其中包含非常简单的 table 数据。

1 2 3 4
5 6 7 8
9 10 11 12
1 2 3 4
2 3 4 5

问题出在访问特定列和行的数据时。 我的方法是使用 loadTable 加载。

Table table;
int numCols;
int numRows;

void setup() {
 size(200,200);
 table = loadTable("celldata.txt","tsv");
 numRows=table.getRowCount();
 numCols=table.getColumnCount();

}

void draw() {
 background(255);
 fill(0);
 text(numRows +" "+ numCols,100,100);  // Check num of cols and rows
 println(table.getFloat(0,0));
}

问题1:当我这样做的时候,它说行数是5,列数是1。为什么不是5 x 4?

问题2:为什么数据的第一个元素是table.getFloat(0,0)"NaN"?

我想稍后使用更大的矩阵并使用 getFloat(i,j) 之类的东西访问某些元素(double 类型)并能够遍历所有元素。 使用与我相同的示例数据,有人可以帮助我了解我的代码有什么问题以及如何访问文本文件的数据吗?我应该使用其他方法而不是 loadTable 吗?

您已告诉 Processing 该文件包含 制表符分隔值(通过使用 "tsv" 选项),但您的文件包含 space 分隔值.

由于您的文件不包含任何制表符,因此它会将整行作为单个值读取。所以 table 的 0,0 位置是 1 2 3 4,这不是数字 - 因此是 NaN。这也是它认为您的 table 只有一列的原因。

您应该将 celldata.txt 文件修改为实际用制表符分隔而不是 spaces:

1   2   3   4
5   6   7   8
9   10  11  12
1   2   3   4
2   3   4   5

您也可以用逗号分隔它们,然后使用 "csv" 选项。

如果您仍然遇到问题,您可以通过将 saveTable(table, "data/new.csv"); 添加到 setup() 函数的末尾,然后查看该文件来查看 Processing 正在读取的内容。这将是一个用逗号分隔的值列表,因此您可以准确地看到 Processing 认为 table 的单元格所在的位置。