我们说我有多个文件,每个文件有15,000行和40,000列。我事先已经确定我只需要每个文件的最后5行。 (例如,我需要行14996,14997,14998,14999和15000)。
在R中,我用read.table()循环遍历每个文件,使用" skip"和" nrows"从每个文件中提取我需要的行而不将整个文件读入R的参数。不幸的是,使用skip参数需要很长时间才能使R到达15,000 x 40,000表的最后五行。是否有一种简单,快捷的方法来提取我需要的行?我应该试试mySQL吗?
答案 0 :(得分:1)
这可能比read.table()
lapply(files, data.table::fread, skip = 14995L, nrow = 5L)
其中files
是您的文件名列表。
更新:根据您的评论,我想您需要在gzfile()
中尝试read.table()
。你没有提到你是否在之前的尝试中使用过它。
dflist <- lapply(files, function(x) {
df <- read.table(zz <- gzfile(x), skip = 14995L, nrow = 5L)
close(zz)
df
})