1
我有数百个.csv文件需要使用fread读入并保存为一个数据表。每个.csv的基本结构都是一样的。有需要跳过的标题信息(使用skip =很容易)。我很难跳过每个.csv文件的最后一行。每个.csv文件都有不同数量的行。R data.table:在文件夹中的所有.csv文件上使用fread跳过每个文件的最后一行
如果我在测试文件夹中只有一个文件,这个脚本完全跳过第一行(使用跳跃=)和最后一行(使用NROWS =):
file <- list.files("Q:/Test/", full.names=TRUE)
all <- fread(file, skip = 7, select = c(1:7,9),
nrows = length(readLines(file))-9)
当保存在多个文件test文件夹,这是我试过的代码:
file <- list.files("Q:/Test/", full.names=TRUE)
L <- lapply(file, fread, skip = 7, select = c(1:7,9),
nrows = length(readLines(file))-9)
dt <- rbindlist(L)
它不会产生L和给了我这个错误:
Error in file(con, "r") : invalid 'description' argument
当每个.csv具有不同数量的行时,如何跳过每个.csv的最后一行的任何想法?
我正在使用data.table版本1.9.6。谢谢。
不要使用'readLines',这会浪费很多精力。试试这里的方法:http://stackoverflow.com/questions/3137094/how-to-count-lines-in-a-document – MichaelChirico
也许'nrow'可以使用负值来跳过文件底部的行。提交[#1643](https://github.com/Rdatatable/data.table/issues/1643)。 – Arun
也许'head -n-1'直接传递给'fread'。或者'grep -v'来删除尾部页脚文本。参见[这个新页面]的第1部分(https://github.com/Rdatatable/data.table/wiki/Convenience-features-of-fread)。 –