【发布时间】:2015-08-16 09:46:24
【问题描述】:
我有一个 9 列的制表符分隔的 .txt 文件,其中包含许多数据格式 - 但是“type”中的一些条目是空的。
id id_2 s1 s2 st1 st2 type desig num
1 1 51371 51434 52858 52939 5:3_4:4_6:2_4:4_2:6 CO 1
2 1 108814 108928 109735 110856 5:3_4:4_6:2_4:4_2:7 CO 2
3 1 130975 131303 131303 132066 5:3_4:4_6:2_4:4_2:8 NCO 3
4 1 191704 191755 194625 194803 NCO 4
5 2 69355 69616 69901 70006 CO 5
6 2 202580 202724 204536 205151 5:3_4:4_6:2_4:4 CO 6
由于格式类型混合,我一直使用 textscan 来导入这些数据:
data = textscan(fid1, '%*f %f %f %f %f %f %*s %s %*[^\r\n]','HeaderLines',1);
要获取第 2-6 列,请跳过“type”并获取第 8 列。
这种方法在具有空条目的行上失败 - 它会跳过它,就好像它不是一列一样,而不是采用“NCO”或“CO”,而是采用“4”或“5”。
有没有办法防止这种情况发生?我知道我可以更改原始 .txt 文件以包含类似“NA”之类的空条目,但这比读取此类文件的更强大的方式更不可取。
编辑:
除了下面的答案,简单地指定使用的分隔符似乎可以解决问题:
data = textscan(fid1, '%*f %f %f %f %f %f %*s %s %*[^\r\n]','HeaderLines',1,'delimiter','\t');
【问题讨论】:
-
是仅
type列中缺少条目,还是其他列中也缺少条目? -
仅
type列。