用非法的EOL标记读取巨大的csv文件

时间:2013-04-05 18:14:19

标签: r

我需要将几个巨大的(> 400MB)csv日志文件读入R.该文件看起来像:

  

N VISIT_DATE REQ_URL TYPE_LEVEL

     

126424 2013/1/25 23:42:34 http://weibo.cn/attgroup/privateAtt?cat=user&f=atts 1

     

33559 2013/1/25 15:15:54 http://i.ifeng.com/mil/mili?vt=5&dh=touch&mid=aKUiAg 1

我使用以下命令来读取csv文件的内容。它适用于大多数数据。但是,某些REQ_URL字段中存在一些非法字符,例如http://some.url/query=_1A_,其中1A是十六进制代码,与LF标记非常相似。似乎scan函数将这些字符视为EOL标记,并在遇到它们时停止。有没有办法让R忽略这些字符或被视为EOL标记? THX。

  

DAT<〜扫描(文件= 'sample.sv',            what = list(“integer”,“numeric”,“character”,“integer”),            sep ='\ t',strip.white = T,quote =“”,            multi.line = F,skip = 1)

1 个答案:

答案 0 :(得分:2)

您可以使用类似于read.table的fread但更快更方便。

TEXT <- '126424 2013/1/25 23:42:34 http://weibo.cn/attgroup/privateAtt?cat=user&f=atts 1
33559 2013/1/25 15:15:54 http://i.ifeng.com/mil/mili?vt=5&dh=touch&mid=aKUiAg 1
33556 2013/1/25 15:15:59 http://some.url/query=_1A_ 1'
library(data.table)
fread(TEXT)
       V1        V2       V3                                                   V4 V5
1: 126424 2013/1/25 23:42:34  http://weibo.cn/attgroup/privateAtt?cat=user&f=atts  1
2:  33559 2013/1/25 15:15:54 http://i.ifeng.com/mil/mili?vt=5&dh=touch&mid=aKUiAg  1
3:  33556 2013/1/25 15:15:59                           http://some.url/query=_1A_  1