4

我需要将几个巨大的(> 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 标记?谢谢。

dat<-scan(file='sample.sv', what=list("integer", "numeric", "character", "integer"), sep='\t', strip.white=T, quote=" ", 多行=F, 跳过=1)

4

1 回答 1

2

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

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
于 2013-04-06T09:49:18.523 回答