R은 크기의 벡터를 할당할 수 없습니다.

Sheeraz Gul 2023년6월21일
  1. R은 크기의 벡터를 할당할 수 없습니다.
  2. 해결 방법 1: gc()를 사용한 가비지 수집
  3. 해결 방법 2: 메모리 제한 늘리기
R은 크기의 벡터를 할당할 수 없습니다.

이 튜토리얼은 r은 크기의 벡터를 할당할 수 없습니다 오류를 보여줍니다.

R은 크기의 벡터를 할당할 수 없습니다.

R에서 대량의 데이터를 처리하려고 할 때 크기의 벡터를 할당할 수 없습니다 오류가 발생합니다. 이 오류는 구문 오류가 아니라 많은 양의 가상 메모리를 사용하기 때문에 매우 많은 양의 데이터를 처리할 때 발생하는 논리적 오류입니다.

대부분의 경우 이 오류는 패키지나 다른 파일과 같은 외부 소스에서 데이터를 로드할 때 발생합니다. 컴파일러가 개체의 크기를 제어할 수 없는 경우 크기의 벡터를 할당할 수 없습니다 오류가 발생합니다.

개체의 벡터를 만들거나 함수를 로드할 때 크기의 벡터를 할당할 수 없습니다 오류가 발생합니다. 이 오류는 작은 개체가 많을 때 작은 개체에서도 발생할 수 있습니다.

오류에는 gc()memory.limit()의 두 가지 솔루션이 있으며 여기서 gc()는 모든 상황에서 작동하지 않습니다. 이 자습서에서는 두 가지 방법을 모두 보여줍니다.

해결 방법 1: gc()를 사용한 가비지 수집

가비지 수집은 가장 먼저 떠오르는 솔루션입니다. 크기의 벡터를 할당할 수 없습니다라는 오류가 있으며 많은 상황에서 작동합니다. 그러나 데이터 양이 훨씬 많을 때는 GC가 작동하지 않습니다.

gc() 메서드는 R에서 가비지 수집에 사용됩니다. 이 오류를 발생시키는 예제를 시도한 다음 gc()로 해결해 봅시다.

demo <- rnorm(5000000000)

위의 코드는 임의로 분포된 값에서 벡터를 생성하며 시스템에 따르면 크기의 벡터를 할당할 수 없습니다 오류가 발생합니다. 출력을 참조하십시오.

Error: cannot allocate vector of size 37.3 Gb
In addition: Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called 'Matrix'

보시다시피 컴파일러는 크기가 37.3Gb인 벡터를 할당할 수 없습니다라는 오류 메모리를 필요로 합니다. GC를 실행한 다음 이 코드를 다시 실행하지 마십시오.

# Run GC
gc()
# Run the above code
demo <- rnorm(5000000000)

위의 코드는 GC를 수행한 다음 코드를 다시 실행하려고 시도합니다. GC 후 37.3 GB의 메모리가 있으면 오류가 해결됩니다. 그렇지 않으면 여전히 오류가 발생합니다. 출력을 참조하십시오.

          used (Mb) gc trigger  (Mb) max used (Mb)
Ncells 1004541 53.7    2078938 111.1  1255027 67.1
Vcells 2577662 19.7    8388608  64.0  2836345 21.7

Error: cannot allocate vector of size 37.3 Gb

보시다시피 GC가 더 많은 메모리를 필요로 하는 소량의 메모리를 지우고 있기 때문에 여전히 동일한 오류가 발생합니다. 따라서 gc()는 작은 상황에서만 작동합니다.

해결 방법 2: 메모리 제한 늘리기

얼마 전에 우리는 memory.limit()size 속성과 함께 사용하여 R에서 메모리 제한을 늘릴 수 있었고, 큰 데이터 상황에서도 크기의 벡터를 할당할 수 없습니다 오류를 해결할 수 있었습니다. 그러나이 방법은 R에서 더 이상 지원되지 않으며 R 설명서에 따라 OS 옵션에서 메모리를 늘릴 수 있습니다.

단계별 프로세스에 따라 메모리를 늘리면 크기 벡터를 할당할 수 없습니다 오류가 해결됩니다.

  • 먼저 RStudio가 닫혀 있는지 확인합니다.
  • 이제 R 프로그램 바로 가기를 찾아 마우스 오른쪽 버튼으로 클릭하여 속성으로 이동합니다.

    R 속성

  • 속성에 들어가면 바로 가기 탭으로 이동하여 대상 필드를 찾습니다.

    R 속성 대상 필드

  • 대상 필드 끝에 다음 행을 추가하십시오.
    --max-mem-size=45000M--max-vsize=45000M
    

    R 속성 증가 메모리

  • 위의 줄은 메모리를 45000 MB로 증가시키며 이는 37.3GB보다 큽니다. 위 줄의 vsize는 벡터 크기를 나타냅니다.
  • 최대 메모리와 최대 벡터 크기를 설정한 후 RStudio를 열고 다음 코드를 실행합니다.
    demo <- rnorm(5000000000)
    

이제 이 코드는 demo라는 벡터를 던지고 생성합니다. 37.3GB의 크기는 너무 큽니다. 메모리를 지원할 수 없는 경우 컴퓨터가 멈출 수 있습니다.

그러나 “크기의 벡터를 할당할 수 없습니다"라는 오류가 발생할 때마다 이 방법을 사용하여 해결할 수 있습니다.

작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

관련 문장 - R Error