我有几个不同的txt文件具有相同的 struct .现在我想用fread将它们读入R,然后将它们合并成一个更大的数据集.
## First put all file names into a list
library(data.table)
all.files <- list.files(path = "C:/Users",pattern = ".txt")
## Read data using fread
readdata <- function(fn){
dt_temp <- fread(fn, sep=",")
keycols <- c("ID", "date")
setkeyv(dt_temp,keycols) # Notice there's a "v" after setkey with multiple keys
return(dt_temp)
}
# then using
mylist <- lapply(all.files, readdata)
mydata <- do.call('rbind',mylist)
代码运行良好,但速度不令人满意.每个txt文件有1M个观察值和12个字段.
如果我用fread
读一个文件,速度很快.但使用apply
时,速度非常慢,显然比逐个读取文件要花很多时间.我想知道哪里出了问题,速度增益有什么改进吗?
我试过llply
英寸plyr
包,速度没有太大提高.
此外,data.table
中是否有任何语法可以实现垂直连接,比如sql
中的rbind
和union
?
谢谢