2016-09-26 6 views
0

문제가 생겼습니다.큰 파일을 r에 병합 할 수 없습니다.

10 개의 커다란 별개의 파일이 있습니다. 열 머리글이없는 파일 유형의 파일로 총 4GB에 머지해야합니다. 나는 그들이 텍스트 파일과 파이프로 구분된다는 말을 들었으므로 각 파일에 txt라는 파일 확장자를 추가했다. 나는 문제가되지 않기를 바란다. 내가

"Error: C stack usage is too close to the limit r" and 

"In scan(file = file, what = what, sep = sep, quote = quote, dec = dec, : 
Reached total allocation of 8183Mb: see help(memory.size)" 
과 같은 오류를보고

temp1 <- read.csv(file="filename.txt", sep="|") 
: 
temp10 <- read.csv(file="filename.txt", sep="|") 

SomeData = Reduce(function(x, y) merge(x, y), list(temp1..., 
temp10)) 

... 나는 다음과 같은 코드를 사용할 때 R Studio는 ...

multmerge = function(mypath){ 
filenames=list.files(path=mypath, full.names=TRUE) 
datalist = lapply(filenames, function(x){read.csv(file=x,header=F, sep 
= "|")}) 
Reduce(function(x,y) {merge(x,y, all=T)}, datalist)} 
mymergeddata = multmerge("C://FolderName//FolderName") 

충돌 또는이 같은 일을하려고 할 때

그렇다면 나는이 질문을 쓰면서 누군가가 질문을 한 것을 보았습니다. here 그래서 SQL 명령을 사용하여 R Studio 나 SSMS에서 이러한 큰 파일을 병합 할 수 있는지 궁금합니다. 그들이 어떻게 합병 될 수 있는지. 이 작업을 수행 할 수있는 방법을 알려주십시오. 나는 그물 위에서 둘러 볼 것이다.

그렇다면 큰 파일을 병합하는 가장 좋은 방법은 무엇입니까? R Studio에서이 작업을 수행 할 수 있습니까? 아니면 오픈 소스가 있습니까?

저는 8GB RAM이 장착 된 64 비트 Windows가 설치된 PC에서 작업하고 있습니다. 나는 R과 SQL Tags를 포함시켜 어떤 옵션이 있는지 살펴 보았다.

누구든지 나를 도울 수 있다면 미리 감사드립니다.

답변

0

컴퓨터에 선택한 작업에 필요한 메모리가 부족합니다.

총 파일 수는 10 개 ~ 4GB입니다. 10 개의 파일을 병합하면 약 4GB의 다른 개체가 만들어져 컴퓨터의 한계에 매우 근접하게됩니다.

운영 체제와 R 및 실행중인 다른 프로그램도 RAM을 사용하므로 RAM이 부족한 것은 놀랍지 않습니다.

더 큰 머시닝에 액세스 할 수 없다면 단계적으로 접근하는 것이 좋습니다. - 처음 두 파일을 가져 와서 병합하십시오. - R에서 파일 개체를 삭제하고 병합 된 개체 만 유지합니다. - 세 번째 개체를로드하고 이전 합병과 병합합니다. 완료 될 때까지 반복하십시오.

+0

Clain - 답장을 보내 주셔서 감사합니다. 내가 경고하는 동안 경고 메시지가 표시됩니다. 내가 모든 데이터를 읽지 않는다는 것을 의미합니까? "경고 메시지 : 스캔시 (file = file, what = what, sep = sep, quote = quote, dec = dec, : 인용 문자열 내에서 EOF). – DiscoDude

+0

@ValdClain - 귀하의 아이디어를 시도했으며 모두 읽지는 않습니다. 항목. – DiscoDude

관련 문제