कार्यक्षेत्र लोड करते समय "खराब मैजिक नंबर" त्रुटि का कारण और इससे कैसे बचा जाए?


93

मैंने अपना 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. मैं एक मैकबुक प्रो पर आर 2.15.1 चला रहा हूं। एक बूटकैम्प विभाजन पर विंडोज एक्सपी चल रहा है।
  2. इस कार्यक्षेत्र फ़ाइल में स्पष्ट रूप से कुछ गड़बड़ है, क्योंकि इसका वजन केवल ~ 80kb पर है जबकि मेरे अन्य सभी आमतौर पर 10,000 हैं
  3. सप्ताहांत में मैं R में एक बाहरी मॉडलिंग कार्यक्रम चला रहा था और इसके उत्पादन को विभिन्न वस्तुओं में संग्रहीत कर रहा था। मैंने कई दिनों के दौरान मॉडल के कई पुनरावृत्तियों को चलाया, उदा। Output_Saturday <- call_model) ()
  4. मॉडल आउटपुट के लिए कुछ खास नहीं है, इसकी बस एक सूची है जिसमें बेटस, वीसी-मैट्रिस, मॉडल विनिर्देश, आदि के लिए स्लॉट हैं।

9
लगता है: यह एक कार्यक्षेत्र फ़ाइल नहीं है, यह R कमांड का एक लॉग है।
जोशुआ उलरिच

4
मुझे उसी पर संदेह है, source(filename)इसके बजाय इसे लोड करने का प्रयास करें load(filename)
nograpes

बम्मर - चेक करना पड़ेगा। काश मैं दावा कर सकता है कि यह एक शुरुआती गलती थी।
एन ब्रूवर

1
@JoshuaUlrich ने जो कहा, उसके समान, मैंने loadकुछ ऐसा किया था जिसे मैंने write.tableएड के बजाय saveएड किया था और मुझे यह त्रुटि मिली। उफ़।
आइसोमॉर्फिज्म

जब मैं एक डेटाबेस को लोड करता हूं load, तो loadDbइसका उपयोग कहां किया जाना चाहिए , यह त्रुटि हुई ।
11:10 बजे mt1022

जवाबों:


112

मुझे लगता है कि त्रुटि जब मैं गलती से इस्तेमाल किया मिल गया load()के बजाय source()या readRDS()


3
तो क्या मैंने, जब मैंने गलती के load()बजाय इस्तेमाल किया read.csv()। : पी
वाल्डिर लियोनिको

35
तो क्या मैंने, भाग 2, जब मैंने गलती से इस्तेमाल load()किया था readRDS()(हाँ, 9 महीने बाद, मैं यहाँ बहुत ही गलती के लिए वापस आ गया हूँ)।
वाल्डिर लियोनसियो

34

इसके अलावा आर कोर टीम द्वारा एक दस्तावेज से निम्नलिखित को ध्यान देने योग्य है, जो v3.5.0 ( यहाँ ) के बाद आर के संस्करणों में परिवर्तन को संक्षेप में प्रस्तुत करता है :

R का नया क्रमांकन प्रारूप (संस्करण 3) है जो ALTREP फ्रेमवर्क ऑब्जेक्ट्स के कस्टम क्रमांकन का समर्थन करता है ... प्रारूप 3 में क्रमबद्ध डेटा को 3.5.0 संस्करण से पहले R के संस्करणों द्वारा नहीं पढ़ा जा सकता है।

जब मैंने v3.6.0 में एक कार्यक्षेत्र को बचाया तो मुझे इस मुद्दे का सामना करना पड़ा, और फिर एक सहयोगी के साथ फ़ाइल साझा की जो v3.4.2 का उपयोग कर रहा था। मैं अपने सहेजे गए फ़ंक्शन में "संस्करण = 2" जोड़कर समस्या को हल करने में सक्षम था।


2
यह अविश्वसनीय रूप से सहायक है!
वुल्फसाथेदुर

यह रास्ता है।
user2961927

धन्यवाद! इसने मेरे मामले में मदद की (यू को सिर्फ ubuntu रिपॉजिटरी से आर स्थापित किया था - और मैंने एक आरडीएटा फ़ाइल खोलने की कोशिश की, जिसे मैंने कुछ हफ्ते पहले आर के थोड़े नए संस्करण का उपयोग करके एक और मशीन पर बनाया था)
लेबैत्स्नोक

18

आपकी फ़ाइल को "myfile.ext" नाम दिया गया है

यदि आप जिस फ़ाइल को लोड करने का प्रयास कर रहे हैं, वह आर-स्क्रिप्ट नहीं है, जिसके लिए आप उपयोग करेंगे

source("myfile.ext")

आप readRDSफ़ंक्शन को आज़मा सकते हैं और इसे चर-नाम पर असाइन कर सकते हैं :

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

9

मैजिक नंबर UNIX- प्रकार सिस्टम से आता है, जहाँ फ़ाइल के पहले कुछ बाइट्स में एक मार्कर होता है जो फ़ाइल प्रकार को दर्शाता है।

यह त्रुटि इंगित करती है कि आप गैर-मान्य फ़ाइल प्रकार को R में लोड करने का प्रयास कर रहे हैं। किसी कारण से, R इस फ़ाइल को R कार्यस्थान फ़ाइल के रूप में नहीं पहचानता है।


6

readrपैकेज स्थापित करें , फिर उपयोग करें library(readr)


1
अच्छी चाल ... मुझे कुछ पैक्स फंक्शन की कोशिश करनी थी, लेकिन फंक्शन्स के readr::माध्यम से स्कैन करना आसान है। readr::read_rdsअंत में मेरे लिए क्या काम किया है।
मैट बैनर्ट

4

यह तब भी होता है जब आप load()उपयोग करने के बजाय एक आरडीएस ऑब्जेक्ट की कोशिश करते हैं

object <- readRDS("object.rds")

2

R पैकेज बनाते समय मुझे त्रुटि मिली (roxygen2 का उपयोग करके)

मेरे मामले में कारण है कि मैं बचा लिया था data/mydata.RDataसाथ saveRDS()के बजाय save()। उदाहरण के लिएsave(iris, file="data/iris.RData")

यह मेरे लिए मुद्दा तय किया। मुझे यह जानकारी यहाँ मिली

भी ध्यान रखें कि साथ save()/ load()वस्तु एक ही नाम इसे शुरू में साथ सहेजा गया है साथ में लोड किया जाता है (यानी आप इसे नाम नहीं बदल सकते, जब तक यह पहले से ही यह नाम पड़ा है जब आप शुरू में यह बचाया के तहत आर वातावरण में लोड है)।


1

मुझे यह समस्या तब हुई जब मैंने आरडाटा फ़ाइल को आर के पुराने संस्करण में सहेजा और फिर मैंने एक नए में खोलने की कोशिश की। मैंने अपने आर संस्करण को नवीनतम में अपडेट करके हल किया।


0

यदि आप devtoolsफ़ाइलों को सहेजने का प्रयास कर रहे हैं :

devtools::use_data(x, internal = TRUE)

फिर, पहले सहेजी गई सभी फ़ाइलों को हटा दें।

डॉक्टर से:

आंतरिक यदि FALSE, प्रत्येक ऑब्जेक्ट को डेटा निर्देशिका में .rda फ़ाइलों में सहेजता है। जब भी पैकेज लोड किया जाता है तो ये उपलब्ध होते हैं। यदि TRUE, सभी वस्तुओं को एक R / sysdata.rda फ़ाइल में संग्रहीत करता है। ये ऑब्जेक्ट केवल पैकेज के भीतर उपलब्ध हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.