R data.table: using fread on all .csv files in folder skipping the last line of each
我有数百个.csv文件需要使用fread读取并另存为一个数据表。每个.csv的基本结构都相同。有需要跳过的头信息(使用skip=很容易)。我很难跳过每个.csv文件的最后一行。每个.csv文件的行数不同。
如果测试文件夹中只有一个文件,则此脚本将完美地跳过第一行(使用skip=)和最后一行(使用nrows=):
1 2 3 | file <- list.files("Q:/Test/", full.names=TRUE) all <- fread(file, skip = 7, select = c(1:7,9), nrows = length(readLines(file))-9) |
在测试文件夹中保存多个文件时,这是我尝试的代码:
1 2 3 4 | 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,并给出以下错误:
1 | Error in file(con,"r") : invalid 'description' argument |
当每个.csv的行数不同时,对于如何跳过每个.csv的最后一行有什么想法?
我使用的是data.table版本1.9.6。谢谢。
现在有点晚了,但我的工作是:
1 2 3 4 5 6 7 8 9 10 | fnames <- dir("path", pattern ="csv") read_data <- function(z){ dat <- fread(z, skip = 1, select = 1) return(dat[1:(nrow(dat)-1),]) } datalist <- lapply(fnames, read_data) bigdata <- rbindlist(datalist, use.names = TRUE) |
这里,