GNU Octave:使用 textscan(...) 读取具有 NA 值的数据
GNU Octave: reading data with NA values using textscan(...)
我需要从缺失值以 NA 形式给出的 ASCII 文件中读取数据。使用 textscan(...) 似乎不起作用,因为 textscan(...) 似乎在第一次出现 NA 时停止 reading/parsing。
下面是该问题的简单演示:
x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%d %d %d' , 'Delimiter' , ';' , 'ReturnOnError' , false )
error: textscan: Read error in field 2 of row 2
我也试图告诉 textscan(...) 将 NA 解释为 "empty value",但没有成功:
x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%d %d %d' , 'Delimiter' , ';' , 'TreatAsEmpty' , 'NA' , 'ReturnOnError' , false )
error: textscan: Read error in field 2 of row 2
谁能解释一下这是怎么回事,或者如何让它发挥作用?
请注意,这只是一个用于说明问题的简化示例。我文件中数据的格式有点复杂,我真的依赖 textscan(...) 来解析它;我不认为没有 textscan(...) 我可以轻松做到这一点。
(我是 运行 Octave 4.2.1。)
NA
是为浮点数定义的,因此您应该使用 '%f'
转换说明符而不是 '%d'
.
x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%f %f %f' ,
'Delimiter' , ';' , 'ReturnOnError' , false )
我需要从缺失值以 NA 形式给出的 ASCII 文件中读取数据。使用 textscan(...) 似乎不起作用,因为 textscan(...) 似乎在第一次出现 NA 时停止 reading/parsing。
下面是该问题的简单演示:
x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%d %d %d' , 'Delimiter' , ';' , 'ReturnOnError' , false )
error: textscan: Read error in field 2 of row 2
我也试图告诉 textscan(...) 将 NA 解释为 "empty value",但没有成功:
x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%d %d %d' , 'Delimiter' , ';' , 'TreatAsEmpty' , 'NA' , 'ReturnOnError' , false )
error: textscan: Read error in field 2 of row 2
谁能解释一下这是怎么回事,或者如何让它发挥作用?
请注意,这只是一个用于说明问题的简化示例。我文件中数据的格式有点复杂,我真的依赖 textscan(...) 来解析它;我不认为没有 textscan(...) 我可以轻松做到这一点。
(我是 运行 Octave 4.2.1。)
NA
是为浮点数定义的,因此您应该使用 '%f'
转换说明符而不是 '%d'
.
x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%f %f %f' ,
'Delimiter' , ';' , 'ReturnOnError' , false )