gpt4 book ai didi

r - 在 R 中导入数百万个文件的最快方法?

转载 作者:行者123 更新时间:2023-12-04 05:41:40 25 4
gpt4 key购买 nike

我有 1500 万个 CSV 文件,每个文件有两列(整数和浮点数),5 到 500 行。每个文件看起来像:

3453,0.034
31,0.031
567,0.456
...

目前,我正在遍历所有文件,并使用 read.csv() 将每个文件导入一个大列表。这是一个简化版本:
allFileNames = Sys.glob(sprintf("%s/*/*/results/*/*", dir))

s$scores = list()

for (i in 1:length(allFileNames)){
if ((i %% 1000) == 0){
cat(sprintf("%d of %d\n", i, length(allFileNames)))
}

fileName = allFileNames[i]
approachID = getApproachID(fileName)
bugID = getBugID(fileName)

size = file.info(fileName)$size
if (!is.na(size) && size > 0){ # make sure file exists and is not empty
tmp = read.csv(fileName, header=F, colClasses=c("integer", "numeric"))
colnames(tmp) = c("fileCode", "score")
s$scores[[approachID]][[bugID]] = tmp
} else {
# File does not exist, or is empty.
s$scores[[approachID]][[bugID]] = matrix(-1, ncol=2, nrow=1)
}
}

tmp = read.csv(fileName, header=F, colClasses=c("integer", "numeric")

稍后在我的代码中,我回顾了列表中的每个矩阵,并计算了一些指标。

开始此导入过程后,似乎需要 3 到 5 天才能完成。有没有更快的方法来做到这一点?

编辑 :我添加了有关我的代码的更多详细信息。

最佳答案

使用 scan (正如约书亚在评论中所说)可能会更快(3-4 倍):

scan(fileName, what=list(0L,0.0), sep=",", dec=".", quiet=TRUE)

主要区别在于 scan返回包含两个元素和 read.csv 的列表返回 data.frame .

关于r - 在 R 中导入数百万个文件的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9842794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com