2016-08-09 8 views
1

내가 R에 3GB의 CSV 파일을로드하려고 나는 다음과 같은 경고 점점 :R에서 메모리를 늘리는 방법?

경고 메시지 :

1 : 스캔 (파일에서를, 무엇을, Nmax가 9 월 12 월은, 인용, 건너 뛰기 niles, na.strings, : 총 할당량 7128MB에 도달 :

2 : (파일, 내용, nmax, sep, dec, 견적, 건너 뛰기, 줄 바꿈, : 총 할당량 7128MB에 도달 : 도움 (memory.size) 참조

나는 이것을 시도 :

memory.size()

[1] 766.68

memory.limit()

[1] 7128

하지만 여전히 내 파일 로드되지 않고 계속 경고 메시지를 표시합니다. 이 파일을 R로 읽는 방법이 있나요?

감사합니다.

+1

사람들은 과거에 사람들이'fread()'를 제안했지만, 조사 할 가치가 있을지도 모릅니다. 또한 가비지 콜렉션이 발생하지 않으면'gc()'가 오류를 도울 수 있습니다. – zacdav

+1

@ zacdav .. 정말 고마워. :) install.packages ("data.table") > library (data.table)> fread ("file. – Sweta

+0

가장 좋은 점은 또한 2.980GB 파일에서 _Read 74180464 행과 11 (열) 열이 00 : 08 : 34_ – Sweta

답변

1

큰 데이터 세트를로드 할 때 R은 엄청나게 비효율적입니다. documentation에서 : 큰 파일을 읽을 때

메모리 사용

이 기능은 메모리의 놀라운 금액을 사용할 수 있습니다. 'R 데이터 가져 오기/내보내기'설명서에는 여기에 설명 된 내용이 포함되어 있습니다.

colClasses가 6 개의 원자 벡터 클래스 중 하나 인 것으로 지정된 경우 메모리가 더 적게 사용됩니다. 많은 다른 숫자 값을 사용하는 열을 읽을 때 특히 그렇습니다. 각각의 고유 값을 문자열로 저장할 때 메모리를 정수로 저장하는 것보다 최대 14 배까지 걸릴 수 있습니다.

가벼운 과대 평가 일지라도 nrows를 사용하면 메모리 사용에 도움이됩니다.

comment.char = ""를 사용하면 read.table보다 상당히 빨라집니다. 기본값입니다.

read.table은 큰 행렬을 읽는 데 적합한 도구가 아닙니다. 특히 많은 열이있는 행 : 매우 다른 클래스의 열을 포함 할 수있는 데이터 프레임 을 읽도록 설계되었습니다. 행렬 대신에 스캔을 사용하십시오.

관련 문제