快速阅读并与 Data.Table 的 Fread 和 Rbindlist 合并
Quick Read and Merge with Data.Table's Fread and Rbindlist
我正在寻找一种使用 data.table 的 fread 和 rbindlist 函数快速读取和合并大量数据文件的方法。我认为如果 fread 可以将文件名向量作为参数,它可能是一个优雅的行,如
mergeddata = rbindlist(fread(list.files("my/data/directory/")))
但由于这似乎不是一个选项,我采取了更笨拙的方法循环遍历文件以读取它们并将它们分配给临时名称,然后将临时数据列表放在一起table 个名称已创建。但是,每当我尝试调用 data.table 名称列表时,我都会被绊倒。所以我的问题是(1)如何在这种情况下将数据table名称列表传递给rbindlist,以及(2)更广泛地说,是否有更好的方法来解决这个问题?
在此先感谢您的宝贵时间和帮助!
datafiles = list.files()
datatablelist = c()
for(i in 1:length(datafiles)){
assign(paste("dt",i,sep=""),fread(datafiles[1]))
datatablelist = append(datatablelist ,paste("dt",i,sep=""))
}
mergeddata = rbindlist(list(datatablelist))
您可以 datatablelist = lapply(list.files("my/data/directory/"), fread)
然后 rbind 生成的数据帧列表。
虽然 lapply
比显式循环更清晰,但如果您将文件直接读入列表,您的循环将起作用。
datatablelist = list()
for(i in 1:length(datafiles)){
datatablelist[[datafiles[i]]] = fread(datafiles[i])
}
这是一种使用fread
将多个数据帧绑定到一个数据帧的简单方法
# Load library
library(data.table)
# Get a List of all files named with a key word, say all `.csv` files
filenames <- list.files("C:/your/folder", pattern=glob2rx("*.csv"), full.names=TRUE)
# Load and bind all data sets
data <- rbindlist(lapply(filenames,fread))
如果您想将所有数据文件绑定到一个数据框列表中,就像
一样简单
# Load data sets
list.DFs <- lapply(filenames,fread)
我正在寻找一种使用 data.table 的 fread 和 rbindlist 函数快速读取和合并大量数据文件的方法。我认为如果 fread 可以将文件名向量作为参数,它可能是一个优雅的行,如
mergeddata = rbindlist(fread(list.files("my/data/directory/")))
但由于这似乎不是一个选项,我采取了更笨拙的方法循环遍历文件以读取它们并将它们分配给临时名称,然后将临时数据列表放在一起table 个名称已创建。但是,每当我尝试调用 data.table 名称列表时,我都会被绊倒。所以我的问题是(1)如何在这种情况下将数据table名称列表传递给rbindlist,以及(2)更广泛地说,是否有更好的方法来解决这个问题?
在此先感谢您的宝贵时间和帮助!
datafiles = list.files()
datatablelist = c()
for(i in 1:length(datafiles)){
assign(paste("dt",i,sep=""),fread(datafiles[1]))
datatablelist = append(datatablelist ,paste("dt",i,sep=""))
}
mergeddata = rbindlist(list(datatablelist))
您可以 datatablelist = lapply(list.files("my/data/directory/"), fread)
然后 rbind 生成的数据帧列表。
虽然 lapply
比显式循环更清晰,但如果您将文件直接读入列表,您的循环将起作用。
datatablelist = list()
for(i in 1:length(datafiles)){
datatablelist[[datafiles[i]]] = fread(datafiles[i])
}
这是一种使用fread
# Load library
library(data.table)
# Get a List of all files named with a key word, say all `.csv` files
filenames <- list.files("C:/your/folder", pattern=glob2rx("*.csv"), full.names=TRUE)
# Load and bind all data sets
data <- rbindlist(lapply(filenames,fread))
如果您想将所有数据文件绑定到一个数据框列表中,就像
一样简单# Load data sets
list.DFs <- lapply(filenames,fread)