我有一个包含大量数据格式的9列制表符分隔的.txt文件,但是有些条目在'type
'内是空的。使用textscan容纳.txt文件中的空白条目 - MATLAB
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');
只会从“类型”列中丢失条目,或者是否会有其他列中的条目丢失? – Divakar
只有'type'列。 – AnnaSchumann