我需要将几个巨大的(> 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)
答案 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