¿La causa del error de "número mágico malo" al cargar un espacio de trabajo y cómo evitarlo?
workspace magic-numbers (6)
Intenté cargar mi espacio de trabajo R y recibí este error:
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
No estoy particularmente interesado en los detalles técnicos, sino principalmente en cómo lo causé y cómo puedo prevenirlo en el futuro. Aquí hay algunas notas sobre la situación:
- Estoy ejecutando R 2.15.1 en una MacBook Pro con Windows XP en una partición de bootcamp.
- Hay algo obviamente mal en este archivo de espacio de trabajo, ya que pesa solo ~ 80kb mientras que todos mis otros son usualmente> 10,000
- Durante el fin de semana estaba ejecutando un programa de modelado externo en R y almacenando su salida en diferentes objetos. Ejecuté varias iteraciones del modelo en el transcurso de varios días, por ejemplo, output_Saturday <- call_model ()
- No hay nada especial para la salida del modelo, es solo una lista con ranuras para betas, matrices VC, especificación del modelo, etc.
El número mágico proviene de sistemas tipo UNIX donde los primeros bytes de un archivo contenían un marcador que indica el tipo de archivo.
Este error indica que está intentando cargar un tipo de archivo no válido en R. Por algún motivo, R ya no reconoce este archivo como un archivo de área de trabajo R.
Instale el paquete readr
, luego use library(readr)
.
Si está trabajando con devtools
intente guardar los archivos con:
devtools::use_data(x, internal = TRUE)
Luego, borre todos los archivos guardados previamente.
Del doc:
interno Si es FALSO, guarda cada objeto en archivos .rda individuales en el directorio de datos. Estos están disponibles cada vez que se carga el paquete. Si es TRUE, almacena todos los objetos en un solo archivo R / sysdata.rda. Estos objetos solo están disponibles dentro del paquete.
Suponiendo que su archivo se llame "myfile.ext"
Si el archivo que intentas cargar no es un R-script, para el cual usarías
source("myfile.ext")
Puede probar la función readRDS
y asignarla a un nombre de variable:
my.data <- readRDS("myfile.ext")
También ocurre cuando intenta load()
un objeto rds en lugar de usar
object <- readRDS("object.rds")
readRDS()
ese error cuando accidentalmente usé load()
lugar de source()
o readRDS()
.