마지막으로, 매우 느린 데이터 처리와 복수 행 data.frames
을 추가하는 문제가 있습니다. 데이터 처리를 위해 lapply
과 dplyr
조합을 사용합니다. OTH,이 프로세스는 각 데이터 프레임에 20000 개의 행과 100 개의 파일을 곱한만큼 매우 느려집니다.목록에서 data.frames를보다 빠른 방법으로 처리하고 결합하는 방법
현재 이것은 lapply
프로세스가 완료된 후에도 나를위한 거대한 병목입니다. bind_rows
프로세스에 충분한 메모리가 없습니다. 여기
library(tidyr)
library(dplyr)
data<- lapply(files,function(x){
tmp <- read.table(file=x, sep=',', header = T,fill=F,skip=0, stringsAsFactors = F,row.names=NULL)%>%
select(A,B, C)%>%
unite(BC,BC,sep='_')%>%
mutate(D=C*A)%>%
group_by(BC)%>%
mutate(KK=median(C,na.rm=TRUE))%>%
select(BC,KK,D)
})
data <- bind_rows(data)
files <- list.files("file_directory",pattern = "w.*.csv",recursive=T,full.names = TRUE)
다음 파일 목록을 처리 할 파일의 목록을 확인
내 데이터 처리 방법“Error: cannot allocate vector of size ... Mb” ... depends on how much left in my ram. I have 8 Gb ram but seems still struggling;(
나는 또한 do.call을 시도했지만 아무 것도 바뀌지 않았습니다! 이 문제에 대한 내 친근한 기능이나 접근 방식은 누구입니까? R 버전 3.4.2와 dplyr 0.7.4를 사용합니다.
data.table 함수 (fread, 참조로 갱신 등)를 사용해보십시오. furrther 조작없이 파일을 읽은 다음 ID로 rbind 한 다음 "BC"및 새 file-id로 그룹화 된 분석을 한 번만 실행하는 것이 좋습니다. –
@ r2evans 의견 주셔서 감사합니다. '결코 사용하지 말자 '는 의미는 무엇입니까?'%> 연산자가'select' 함수를 읽은 후리스트의 모든 파일을 전달한다고 가정합니까? – Alexander
오류가 있습니까? 경고? 당신이 뭘 잘못하고 있다는 표시가 있습니까? 더 많은 정보를 제공해야합니다. (사용하고있는 모든 꾸러미를 포함해야합니다. 아마도'dplyr'와'tidyr' 이상일 것입니다.) – r2evans