sourcecode

워크스페이스를 로드할 때 "나쁜 매직넘버" 오류의 원인과 회피 방법은 무엇입니까?

copyscript 2023. 6. 8. 22:27
반응형

워크스페이스를 로드할 때 "나쁜 매직넘버" 오류의 원인과 회피 방법은 무엇입니까?

R 작업 공간을 로드하려고 시도했지만 다음 오류가 발생했습니다.

Error: bad restore file magic number (file may be corrupted) -- no data loaded
In addition: Warning message:
file ‘WORKSPACE_Wedding_Weekend_September’ has magic number '#gets'
   Use of save versions prior to 2 is deprecated 

기술적인 부분에 대해서는 특별히 관심이 있는 것이 아니라 주로 제가 어떻게 이런 일을 일으켰는지, 앞으로 어떻게 예방할 수 있는지에 대해서 관심이 많습니다.다음은 상황에 대한 몇 가지 참고 사항입니다.

  1. 부트캠프 파티션에서 Windows XP를 실행하는 MacBook Pro에서 R2.15.1을 실행하고 있습니다.
  2. 이 작업 공간 파일은 무게가 ~80kb에 불과한 반면 다른 모든 파일은 보통 10,000 이상이기 때문에 분명히 잘못된 것이 있습니다.
  3. 주말 동안 저는 R에서 외부 모델링 프로그램을 실행하고 다른 객체에 출력을 저장하고 있었습니다.며칠 동안 모델을 여러 번 반복했습니다. 예를 들어 output_Saturday <-call_model()
  4. 모델 출력에는 특별한 사항이 없으며, 베타, VC 매트릭스, 모델 사양 등을 위한 슬롯이 있는 목록일 뿐입니다.

실수로 사용했을 때 오류가 발생했습니다.load()대신에source()또는readRDS().

또한 R Core Team이 v3.5.0(여기) 이후 R 버전의 변경 사항을 요약한 문서에서 다음 사항에 주목할 필요가 있습니다.

R에는 ALTREP 프레임워크 개체의 사용자 지정 직렬화를 지원하는 새로운 직렬화 형식(버전 3)이 있습니다.3.5.0 이전 버전의 R에서는 형식 3의 직렬화된 데이터를 읽을 수 없습니다.

v3.6.0에서 작업 공간을 저장한 다음 v3.4.2를 사용하는 동료와 파일을 공유할 때 이 문제가 발생했습니다.저장 기능에 "version=2"를 추가하여 문제를 해결할 수 있었습니다.

파일 이름이 "myfile.ext"라고 가정합니다.

로드하려는 파일이 사용할 R 스크립트가 아닌 경우

source("myfile.ext")

당신은 시도해 볼 수 있습니다.readRDS함수를 사용하여 변수 이름에 할당합니다.

my.data <- readRDS("myfile.ext")

매직 넘버는 파일의 처음 몇 바이트가 파일 형식을 나타내는 마커를 보유한 UNIX 유형 시스템에서 유래되었습니다.

이 오류는 R에 유효하지 않은 파일 형식을 로드하려고 시도 중임을 나타냅니다.어떤 이유에서인지 R은 더 이상 이 파일을 R 작업영역 파일로 인식하지 않습니다.

설치readr패키지, 사용library(readr).

그것은 또한 당신이 시도할 때 발생합니다.load()rds 객체를 사용하는 대신

object <- readRDS("object.rds")

저장할 때 오류가 발생했습니다.saveRDS()보다는save()를 들어, 예를 들어.save(iris, file="data/iris.RData")

이것으로 저는 그 문제를 해결했습니다.여기서 이 정보를 찾았습니다.

또한다같경우은과음경우▁also와 함께 사용할 하십시오.save()/load()개체가 처음에 저장된 이름과 동일한 이름으로 로드됩니다(즉, 처음 저장했을 때의 이름으로 R 환경에 이미 로드되기 전에는 개체 이름을 바꿀 수 없습니다).

이전 버전의 R에 R 데이터 파일을 저장하고 새 파일을 열려고 할 때 이 문제가 발생했습니다.저는 제 R 버전을 최신 버전으로 업데이트하여 해결했습니다.

함께 작업하는 .devtools다음을 사용하여 파일을 저장합니다.

devtools::use_data(x, internal = TRUE)

그런 다음 이전에 저장한 모든 파일을 삭제합니다.

문서에서:

internal FALSE인 경우 각 개체를 데이터 디렉토리의 개별 .rda 파일에 저장합니다.패키지가 로드될 때마다 사용할 수 있습니다.TRUE인 경우 모든 개체를 단일 R/sysdata.rda 파일에 저장합니다.이러한 개체는 패키지 내에서만 사용할 수 있습니다.

R, R Studio 버전을 업데이트하고 이전 버전에서 만든 파일을 로드할 때 이 오류가 발생했습니다.그래서 저는 이전 버전의 R을 다시 설치했고 모든 것이 정상적으로 작동했습니다.

언급URL : https://stackoverflow.com/questions/12463583/the-cause-of-bad-magic-number-error-when-loading-a-workspace-and-how-to-avoid

반응형