비슷한 Q가 R: Applying readRDS to a list object of .Rds file names 일 수 있지만 그 해결책은 내 for loop
보다 훨씬 효율적이지 않습니다.500 개의 독립적 인 작은 .rds 파일을 단일 데이터로 병렬화하십시오. 프레임
하나 개의 폴더에, 나는 500
.rds files
라는 이름으로 file_1.rds
, file_2.rds
, ..., file_500.rds
을 저장했다.
각 파일의 크기는 및 6 variables
입니다.이 파일은 큰 크기의 작은 청크 인 data.frame
입니다.
mydf <- data.frame()
for (m in 1 : 500) {
temp <- readRDS(paste0("H://myfolder//file_",m, ".rds"))
mydf<- rbind(mydf, temp)
}
코드를보다 효율적으로 접근하거나 개선하는 방법에 대한 의견이 있으십니까?
또한 500 .rds files
을 만들었으므로 .csv
에 저장하거나 .rds
보다 훨씬 효율적으로 읽을 수있는 형식으로 저장하여 write
프로세스를 개선 할 수 있습니다.
'parallel :: mclapply'을 사용하는 것은 어떻습니까? 쓰기 과정에서'fst' 패키지 https://github.com/fstpackage/fst/blob/develop/README.md를 체크 아웃 할 수 있습니다. 게다가, 나는 파일을 목록으로 읽어 들였을뿐 * 한 번만'data.table :: rbindlist'를 사용하여 단일 테이블로 결합했습니다. –
'parallel :: mclapply'에서'data.table :: rbindlist'를 사용 하시겠습니까? 지금까지 write와 관련하여 각 file_x는 길고 복잡한 함수를 한 번 반복 한 결과이므로 이전에 얻은 모든 청크를 읽을 때 다음 프로세스를 향상시키기 위해 file_x의 확장을 변경하는 것과 관련된 유일한 문제는 – Seymour
아니요,'parallel :: mclapply'를 사용하여 (병렬 처리 된) 파일을 읽고 나중에 * 결과 목록에서 단일 rbindlist를 실행하는 것이 좋습니다. –