سؤال

أنا أستخدم حزمة QuantMod لاستيراد بيانات السلسلة المالية من Yahoo.

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

أرغب في تغيير اسم الكائن "GSPC" إلى "SPX". لقد جربت وظيفة إعادة تسمية في حزمة إعادة الشكل ، لكنها تغير فقط الأسماء المتغيرة. يحتوي كائن "GSPC" على متجهات GSPC.Open ، GSPC.High ، إلخ. أود إعادة تسمية "GSPC" إلى "SPX" لتغيير GSPC.Opn إلى spx.open وما إلى ذلك.

هل كانت مفيدة؟

المحلول

يعد إعادة تسمية كائن وأسماء 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

R توظيف ما يسمى تقييم كسول. تأثير ذلك هو أنه عندما "نسخ" SPY <- GSPC أنت لا تخصص مساحة جديدة في الذاكرة SPY. يعرف R أن الكائنات متطابقة ويجعل نسخة جديدة فقط في الذاكرة إذا تم تعديل أحدها (بمعنى آخر عندما لم تعد متطابقة ، على سبيل المثال عند تغيير أسماء الأعمدة في السطر التالي). لذلك عن طريق العمل

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

أنت لا تنسخ حقًا GSPC ولكن مجرد إعطائها اسمًا جديدًا (SPY) ثم أخبر R أن تنسى الاسم الأول (GSPC). عندما تقوم بعد ذلك بتغيير أسماء الأعمدة ، لا تحتاج إلى إنشاء نسخة جديدة من SPY حيث GSPC لم يعد موجودًا ، مما يعني أنك قمت بإعادة تسمية الكائن حقًا دون إنشاء نسخ وسيطة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top