필자는 15 백만 개의 CSV 파일을 보유하고 있으며 각 파일에는 두 개의 열 (정수 및 부동 소수점)과 5 - 500 개의 행이 있습니다. 나는 모든 파일을 반복하고, 큰 목록에 각 파일을 가져 read.csv()
를 사용하고, 현재R에서 수백만 개의 파일을 가져 오는 가장 빠른 방법은 무엇입니까?
3453,0.034
31,0.031
567,0.456
...
: 각 파일은 같이 보입니다. 여기에 단순화 된 버전입니다 :
는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 일이 걸리는 것처럼 보입니다. 이 작업을 수행하는 더 빠른 방법이 있습니까?
수정 : 내 코드에 대한 자세한 내용을 추가했습니다.
[신속 R dataframes에서 매우 큰 테이블을 판독]의 중복 가능성 (http://stackoverflow.com/questions/1727772/quickly-reading-very-large-tables-as-dataframes-in-r) – joran
무엇을하려고합니까? 모든 데이터가 포함 된 단일 행렬을 작성하거나 각 행렬을 별도로 읽고 처리합니다. –
많은 파일을 한꺼번에로드하는 것과 관련이 있습니다. http://stackoverflow.com/questions/3764292/ – Ben