`fread`-ing带有不规则分隔符的文本文件
我需要读取带有不规则分隔符的大(>1GB)文本文件。简化示例如下所示: 1,1,1`fread`-ing带有不规则分隔符的文本文件,r,data.table,R,Data.table,我需要读取带有不规则分隔符的大(>1GB)文本文件。简化示例如下所示: 1,1,11,1,1……1,1,1,11,1,1…… 不规则线(3个分隔符而不是上例中的2个分隔符)可能出现在第千行之后 read.table与fill=TRUE和col.names中的4个值一起使用freadwithfill=TRUE无法读取不规则行。添加col.names会导致错误 A MWE: sometext <- "1,1,1" fulltext <- paste(rep(sometext, 1
1,1,1
……
1,1,1,1
1,1,1
……
不规则线(3个分隔符而不是上例中的2个分隔符)可能出现在第千行之后
read.table
与fill=TRUE
和col.names
中的4个值一起使用fread
withfill=TRUE
无法读取不规则行。添加col.names
会导致错误
A MWE:
sometext <- "1,1,1"
fulltext <- paste(rep(sometext, 150), collapse="\n")
fulltext <- paste0(fulltext, "\n1,1,1,1") # Irregular line
fulltext <- paste0(fulltext, "\n1,1,1")
# Works
mwe.readtable <- read.table(text=fulltext,
sep=",",
col.names = paste("V", 1:4, sep=""),
fill=TRUE)
# Fails w/ warning
mwe.fread <- fread(fulltext,
sep = ",",
fill=TRUE)
# Fails w/ error
mwe.fread2 <- fread(fulltext,
sep = ",",
col.names = paste("V", 1:4, sep=""),
fill=TRUE)
sometext最有效的方法可能是使用命令行工具计算文件中任何一行的最大逗号数,然后填充其余行。可能有两个相关的未决问题:@格雷戈:谢谢你的建议。数据是敏感的,我正在通过Windows服务器远程工作;我不熟悉该操作系统提供的处理此类问题的工具。您有什么建议吗??第三段中的fread
帮助说“'fread'用于常规分隔文件;即,每行具有相同的列数。”然而,它有一个填充
选项这一事实与此相矛盾,如果它在那里,您就可以正确地期望它工作。除了@Henrik提到的两个问题外,还有一个问题表明他们可能仍在解决这个问题:使用colClasses=
arg尝试iotools::read.csv.raw
。