文本文件上的readtable忽略包含列名称的第一行

时间:2018-10-11 13:31:48

标签: matlab file-io

我有一个制表符分隔的文本文件,其中包含一些组织成列的数据,第一行充当列名,例如:

TN Stim Task RT
1   A    A    500.2
2   B    A    569
3   C    A    654

以此类推。

我正在尝试使用readtable将这个文本文件读入MATLAB(r2018a)

Data1 = readtable(filename);

我设法获取Data1表中的所有数据,但列名显示为Var1Var2等。如果我使用“名称/值”对指定读取第一行作为列名,如:

Data1 = readtable(filename, 'ReadVariableNames', true);

然后我将列名作为第一个数据行,即

1  A  A  500.2

所以看起来它完全忽略了第一行。如何修改readtable调用以将第一行中的条目用作列名?

2 个答案:

答案 0 :(得分:1)

我知道了。似乎最后一列之后的某些行中还有一个附加选项卡。因此,readtable正在将其读取为附加列,但没有要为其分配的列名称。看来,如果缺少任何列名,则将它们全部命名为Var1,Var2等。

答案 1 :(得分:0)

基于上面示例文件文本的格式设置,看来列标签用空格而不是制表符分隔数据。在这种情况下,readtable(基于数据)将假设delimiter是制表符,并将列标签视为header line to skip。在它们之间添加标签,您应该会很高兴。

在列标签之间使用空格进行测试:

% File contents:
TN Stim Task RT
1   A   A   500.2
2   B   A   569
3   C   A   654

>> Data1 = readtable('sample_table.txt')

Data1 = 

    Var1    Var2    Var3    Var4   % Default names
    ____    ____    ____    _____

    1       'A'     'A'     500.2
    2       'B'     'A'       569
    3       'C'     'A'       654

使用列标签之间的标签进行测试:

% File contents:
TN  Stim    Task    RT
1   A   A   500.2
2   B   A   569
3   C   A   654

>> Data1 = readtable('sample_table.txt')

Data1 = 

    TN    Stim    Task     RT  
    __    ____    ____    _____

    1     'A'     'A'     500.2
    2     'B'     'A'       569
    3     'C'     'A'       654