Fread
包中的 data.table
通常可以通过fill=TRUE
开关处理不规则表(在我的情况下是SAM文件),只需用NA填充“不完整”行即可。有时,如果列出现在表的末尾,它可能找不到正确的最大列数,例如以下示例:
> body = paste0(rep("1 2\n", 1000), collapse="")
> main = paste0(body, "1 2 3\n", body, collapse="")
> fread(main, fill=T)
Warning message:
In fread(main, fill=T) :
Stopped early on line 1001. Expected 2 fields but found 3.
Consider fill=TRUE and comment.char=. First discarded non-empty line: <<1 2 3>>
是否可以通过fread
选项强制fill
使用正确的列数,在这种情况下为三?
当前,我只提取列数,填充第一行(用sed
),fread
并删除填充。这会消除快速加载带来的任何好处。
与this的旧问题相关,请在“填充”选项之前。