使用R语言SAScii包处理大文件时,进度提示是否代表运行正常?
关于SAScii处理大文件时的进度提示解答
嘿,别担心,这个提示完全是正常现象,说明你的程序正在稳步运行中!
我来给你拆解一下:
- 你用的
read.SAScii()函数底层依赖R的read.fwf()来读取固定宽度格式的DAT文件。当处理超大文件(比如你这个2.3GB的)时,read.fwf()默认会开启进度反馈机制——每成功读取1000条记录,就会输出这条提示,目的是让你知道程序没卡死,还在持续解析数据。 - 2.3GB的固定宽度文件本身数据量极大,而且固定宽度格式需要逐行识别每个字段的起始和结束位置,比普通CSV这类分隔符文件的解析成本高很多,所以运行一小时才出现第一次进度提示完全合理,后续应该还会陆续出现“read.fwf has read in 2,000 records”“3,000 records”这类更新。
如果还是有点不放心,你可以观察后续的输出:如果进度提示持续增加,就说明一切正常;如果长时间停在同一个数字不动,那才需要考虑是否有内存不足或者文件损坏的问题。
另外给你个小建议:如果之后经常处理这类大文件,可以先核对下16crime.sas里的变量位置定义是否准确,避免等几小时读完才发现字段解析错误;要是想提速,也可以研究下分块读取的方法,不过SAScii直接用SAS脚本解析固定宽度文件的优势还是很明显的。
内容的提问来源于stack exchange,提问作者spmoose
相关产品推荐
相关产品推荐

