2010-04-26 13 views
16

मैं याहू से वित्तीय श्रृंखला डेटा आयात करने के लिए क्वांटमॉड पैकेज का उपयोग कर रहा हूं।मैं आर ऑब्जेक्ट का नाम कैसे बदलूं?

library(quantmod) 
getSymbols("^GSPC") 
[1] "GSPC" 

मैं ऑब्जेक्ट "जीएसपीसी" से "एसपीएक्स" का नाम बदलना चाहता हूं। मैंने reshape पैकेज में नाम बदलने का प्रयास किया है, लेकिन यह केवल परिवर्तनीय नाम बदलता है। "जीएसपीसी" ऑब्जेक्ट में वेक्टर जीएसपीसी हैं। ओपन, जीएसपीसी। हाई, इत्यादि। मैं जीएसपीसी को बदलने के लिए "जीएसपीसी" से "एसपीएक्स" का नाम बदलना चाहता हूं। एसपीएक्स को खोलें। ओपन और इसी तरह।

उत्तर

28

एक वस्तु और यह के भीतर colnames का नाम बदल रहा प्रक्रिया दो चरणों में है:

SPY <- GSPC# assign the object to the new name (creates a copy) 
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY)) # rename the column names 

अन्यथा, getSymbols समारोह नहीं स्वत: सौंपने के लिए आप की अनुमति देता है, ऐसी स्थिति में आप पहली बार कदम को छोड़ सकता है (आप अभी भी कॉलम का नाम बदलने की आवश्यकता होगी)।

SPY <- getSymbols("^GSPC", auto.assign=FALSE) 

से @backlin

आर इसलिए आलसी मूल्यांकन बुलाया रोजगार टिप्पणी। इसका एक प्रभाव यह है कि जब आप SPY <- GSPC "प्रतिलिपि" करते हैं तो आप वास्तव में SPY के लिए स्मृति में नई जगह आवंटित नहीं करते हैं। आर जानता है कि ऑब्जेक्ट्स समान हैं और उनमें से एक मेमोरी में केवल एक नई प्रतिलिपि बनाता है यदि उनमें से एक संशोधित है (i.e. जब वे समान नहीं हैं, उदा। जब आप निम्न पंक्ति पर कॉलम नाम बदलते हैं)। तो

SPY <- GSPC 
rm(GSPC) 
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY)) 

करने में आप वास्तव में कभी नहीं GSPC कॉपी लेकिन केवल यह एक नया नाम (SPY) देना और फिर आर बता पहला नाम (GSPC) भूल जाते हैं। जब आप कॉलम नामों को बदलते हैं तो के बाद से SPY की एक नई प्रतिलिपि बनाने की आवश्यकता नहीं है, जिसका अर्थ है कि आपने वास्तव में मध्यवर्ती प्रतियों के बिना ऑब्जेक्ट का नाम बदल दिया है।

+0

gsub() फ़ंक्शन मेरे उद्देश्यों के लिए पूरी तरह से काम करता है। शेन फिर से धन्यवाद। – Milktrader

+10

यह मुझे कुछ समय के लिए परेशान करता था, इसलिए मैं दूसरों के लिए इसे स्पष्ट करने के लिए आलसी मूल्यांकन पर हिस्सा जोड़ना चाहता था। मेरे पास स्मृति और समय का उदाहरण यह सत्यापित करने के लिए किया गया है कि यह वास्तव में आर – Backlin

+7

के अंदर क्या होता है आलसी मूल्यांकन पर नोट के लिए धन्यवाद! –

संबंधित मुद्दे