나는 4GB의 RAM을 가지고 있으며 오류 메시지 I 'm getting : Error: cannot allocate vector of size 147.6 Mb
에 따라 Linux에서 R의 메모리로 147.6MB를 가져 오는 데 문제가 있습니다.data.frames를 병합하면 메모리 부족 오류가 발생합니다.
어떻게 진단 할 수 있습니까?
IDs <- read.csv('Set1.csv') # 2 MB
Set2 <- read.csv('Set2.csv') # 240 MB
data <- merge(IDs, Set2, by='MemberID')
rm(IDs) # Remove junk!
rm(Set2) # Remove junk!
gc()
print('First merge complete')
Set3 <- read.csv('Set3.csv') # 25 MB
data <- merge(data, Set3, by='MemberID')
rm(Set3) # Remove junk!
gc()
print('Second merge complete')
실행은 첫 번째 인쇄 문 뒤에 정지 :
여기 내 코드입니다. 여분의 메모리 사용량이 어디에서 오는지 이해할 수 없습니다. R의 memory() 문서를 살펴보면 연속적인 메모리 문제 인 것 같습니다. 우분투에서이 문제를 해결할 방법이 있습니까?
비슷한 질문을하는 다른 사람들을 살펴 보았지만 제안 된 솔루션은 Windows 관련 항목이었습니다.
EDIT 1
일부 의견은 아래의 코멘트를 해결하기 위해 : 개체가 CSV에서 읽을에서 너무 많은 크기를 변경하는 것처럼
> print(object.size(IDs), units="Mb")
1.3 Mb
> print(object.size(Set2), units="Mb")
142.6 Mb
> print(object.size(Set3), units="Mb")
12.5 Mb
그래서, 그것은 보이지 않는다. 나는
편집 내가 data.table()를 사용하고 동일한 오류가 내 코드를 업데이트 한 2
... data.table()와 나머지에 위로를 확인합니다. 이것은 어쩌면 그것이 내 컴퓨터에 어떻게 든 특별한 것이라고 우려하게 만들 수 있습니까? 이것은 단지 관련 파일의 크기가 매우 이상하게 보입니다. Error: cannot allocate vector of size 147.6 Mb
IDs <- as.data.table(read.csv('Set1.csv')) # 2 MB
Set2 <- as.data.table(read.csv('Set2.csv')) # 240 MB
data <- merge(IDs, Set2, by='MemberID')
rm(IDs) # Remove junk!
rm(Set2) # Remove junk!
gc()
print('First merge complete')
Set3 <- as.data.table(read.csv('Set3.csv')) # 25 MB
data <- merge(data, Set3, by='MemberID')
rm(Set3) # Remove junk!
gc()
print('Second merge complete')
(3) 내 데이터를 검사 편집, 나는 문제가 여기에있을 수있다 생각한다. Set3.csv에는 몇 가지 공통 필드 이름이 있으므로 nx n 조인 등의 불쾌한 일을하고 있다고 생각합니다.
당신은 어딘가에 [The R Inferno] (https://www.google.com/url?q=http://www.burns-stat.com/pages/)의 2 번째 서클이 무엇인지 생각하고 있습니다. 가정교사/R_inferno.pdf & sa = U & ei = gr-ET_f2Ms_TiAKs-fH1BA & ved = 0CBAQFjAA & usg = AFQjCNFYCWUrzMj_7SOwr-EJ9Gu34VOl_w).Merge는 매우 메모리 집약적인데, 만약 당신이'object.size'를 본다면 R로 읽어 들인 csv 파일은 그 파일보다 훨씬 클 것이라고 가정합니다. – Justin
'data.table()'을 사용하면 더 좋았습니다. 대용량 데이터 객체를 병합하기 위해 메모리 관리 측면 에서뿐만 아니라 작업 수행 측면에서도 마찬가지입니다. – Chase
그냥 잠깐 확인해보십시오. 새로운 R 세션에 맞습니까? – jimmyb