2010-03-26 12 views
13

कल्पना कीजिए कि आप एक वस्तु foo कि आप saved.file.rda के रूप में सहेजा इस प्रकार है:का निर्धारण नाम आर में लोड

foo <- 'a' 
save(foo, file='saved.file.rda') 

आप एक से अधिक वस्तुओं के साथ एक वातावरण में saved.file.rda लोड मान लीजिए लेकिन वस्तु है कि के नाम भूल गया saved.file.rda में। क्या नाम निर्धारित करने के लिए आर में कोई रास्ता है?

bar <- load('saved.file.rda') 
eval(parse(text=bar)) # this will pull up the object that was in saved.file.rda 

हालांकि, वहाँ ऐसा करने का एक बेहतर तरीका है:

आप इसे निम्नलिखित रास्ता है, जो एक छोटे से भद्दा लगता है कर सकते हैं?

+0

बस स्पष्ट करने के लिए: तो फिर तुम तुम क्या चाहते प्राप्त करने के लिए get और ls इस्तेमाल कर सकते हैं आप ऑब्जेक्ट का नाम चाहते हैं ('" foo "') या/और वस्तु की मूल्य ('" एक "')? – Marek

+0

मरेक, मैं ऑब्जेक्ट के नाम पर interesetd हूँ ताकि मैं इसे बाद में देख सकूं। – andrewj

+0

ऑब्जेक्ट का नाम आपके 'bar' चर में है। तो आप इसे प्रिंट कर सकते हैं और नाम देख सकते हैं। – Marek

उत्तर

18

मान लिया जाये कि केवल एक ही वस्तु saved.file.rda में बचाया, के बारे में है:

bar <- load('saved.file.rda') 
the.object <- get(bar) 

या बस:

bar <- get(load('saved.file.rda')) 

आप "साफ" होने के लिए और सामान के साथ अपने वैश्विक कार्यक्षेत्र को दूषित नहीं चाहते हैं आपने लोड किया है (और नाम भूल गया है), आप अपने ऑब्जेक्ट को पर्यावरण में लोड कर सकते हैं, और उस वातावरण को निर्दिष्ट कर सकते हैं जिसमें get पर कॉल किया गया है।

शायद:

temp.space <- new.env() 
bar <- load('saved.file.rda', temp.space) 
the.object <- get(bar, temp.space) 
rm(temp.space) 
... 
+0

पर्यावरण को डेटा लोड करना अलग है। मेरा जवाब जांचें। आप समाधान वर्कस्पेस को डेटा लोड करते हैं। करो 'एलएस() '। – Marek

+0

आह .. मेरा मतलब 'temp.space' को 'load' के दूसरे तर्क के रूप में रखना था। अच्छा पकड़ (और ठीक करने के लिए संपादित) –

+0

इसके लिए धन्यवाद, मुझे इसके लिए थोड़ी देर लग रही है। –

3

अच्छी तरह से, मैं एक समारोह है कि ऐसा करने के लिए की आवश्यकता समाप्त पता (यानी, आर बाइनरी फ़ाइल तुम सिर्फ लोड में ऑब्जेक्ट का नाम लगता है) करते हैं - दूसरे शब्दों में , आप 'लोड' के स्थान पर आर बाइनरी फ़ाइलें लोड करने के लिए इस तकनीक का प्रयोग कर सकते हैं:

file_path = "/User/dy/my_R_data/a_data_set.RData" 
attach(file_path, pos=2, name=choose_a_name, warn.conflict=T) 
  • 'warn.conflicts = टी' डिफ़ॉल्ट विकल्प

  • 012 है
  • 'pos = 2' भी डिफ़ॉल्ट है; "2" आपकी खोज पथ में स्थिति को संदर्भित करता है। उदाहरण के लिए, स्थिति 1 "वैश्विक स्तर" है। खोज पथ के पूरे सरणी प्राप्त करने के लिए, खोज() का उपयोग करें। तो आप खोज पथ के लिए नई वस्तु खोज (से) [2]

  • उपयोग 'अलग' तक पहुंचने होगा वस्तु

5

दूर करने के लिए आप ?load में पढ़ा आप डेटा लोड कर सकते हैं कर सकते हैं निर्दिष्ट पर्यावरण के लिए।

tmp_env <- new.env() 
load('saved.file.rda', tmp_env) 
get(ls(tmp_env), envir=tmp_env) # it returns only first object in environment 
# [1] "a" 
संबंधित मुद्दे